Unity网络:使用syncliststring

时间:2018-07-31 07:54:20

标签: unity3d networking

我有一个标记为“仅服务器”(在网络标识上)的游戏管理器对象,我想跟踪游戏中的中性游戏对象。

当列表更改时,我需要一种将列表同步到所有客户端的方法。所以我一直在尝试使用SyncListString。但是,由于游戏管理器对象并非在所有客户端上都存在,因此出现此错误“找不到x的SyncList消息的目标”。足够公平。

所以我想我会在游戏管理器对象中提供一个普通的字符串列表,并在播放器对象上添加SyncListString,然后使用Command函数对其进行更新。但是,我无法将SyncListString设置为等于游戏管理器列表,因为它们是不同的类型。

我做错了吗?有更好的方法吗?

我非常想使用isServer语句将游戏管理器中的所有代码放入播放器脚本中……也许我应该这么做?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

如果我正确回答了您的问题,则应在游戏的每个实例上创建游戏管理器对象。 然后使用Command更新您的SyncListString。

您可以使您的Game Manager保持静态(单一设计模式)。

之后,您可以从任何地方访问静态SyncListString,但必须在Command函数中进行更新。

答案 1 :(得分:1)

  

我曾尝试将游戏管理器syncliststring设为静态,   我收到错误消息“同步列表....不能是静态的

您应该使您的类静态,而不是列表本身。 如果您不想这样做。只需获得对Game Manager的引用,然后从那里使用列表即可。 (您的列表必须是公开的)