我正在使用unity3d与ProtoBuff一起开发网络游戏。
我定义一个BattleData.proto
message BattleData
{
required uint64 id = 1;
required string name = 2;
required int32 hp = 3;
required int32 atk = 4;
}
我从net接收数据,然后将二进制数据反序列化为BattleData类。
现在我对如何使用它有疑问。
如果将数据作为类成员,则应使用logic.battleData.XXX,否则可以更快地使用logic.atk。
我不喜欢这种风格,因为这里有很多'。'。但是,如果我
选择另一个,则必须在原型更改后修改类BattleLogic
。
public class BattleLogic{
public BattleData battleData;
or???
public ulong id;
public string name;
public int hp;
public int atk;
}
答案 0 :(得分:0)
如果您不喜欢.
,您可以像这样使用properties
public class BattleLogic
{
public BattleData battleData;
// as expression body
public ulong id
{
get
{
return battleData.id;
}
set
{
battleData.id = value;
}
}
// basically the same as expression bodies
public string name { get => battleData.name; set => battleData.name = value; }
public int hp { get => battleData.hp; set => battleData.hp = value; }
public int atk { get => battleData.atk; set => battleData.atk = value; }
}
现在您可以读写
var id = battleLogicReference.id;
battleLogicReference.name = "XYZ";