繁体   English   中英

从网络数据复制到逻辑数据或使数据成为类成员

[英]copy from net's data to logic's data or make data as a class member

我正在使用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;
}

好吧,如果你不喜欢的话. 你可以简单地使用性质一样

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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM