我创建了以下结构来跟踪我用于游戏的所有网络ID:
public struct NetworkId {
private static int _availibleId = 1;
private int _id;
public static implicit operator int(NetworkId i) {
if (i._id == 0) {
i._id = _availibleId++;
}
return i._id;
}
}
我在有人试图访问它时初始化ID。但我现在的问题是,当我在下面的例子中使用id时,每次都会重新分配ID。
public class TestObject {
private NetworkId _id;
public NetworkId Id { get { return _id; } }
public void Create {
NetworkManager.SendPacket(new Packets.CreateObject(Id));
}
}
我无法绕过这里发生的事情。谢谢你的帮助!
答案 0 :(得分:0)
它需要是一个结构吗?使用类语义执行此操作:
public class NetworkId
{
private static int _availibleId = 1;
public int Id { get; } = _availibleId++;
public static implicit operator int(NetworkId i)
{
return i.Id;
}
}
void Test() {
int A = new NetworkId(); //A=1
int B = new NetworkId(); //B=2
}