首页 文章

Unity 5 Networking中的脚本订购问题

提问于
浏览
0

我刚刚开始在Unity5中使用新的统一网络系统 . 今天我发现了一件我无法理解的奇怪的事情 .

我制作了2个新脚本并将“Debug.Log”添加到Start()和Update()两个中,然后禁用游戏对象,添加2个脚本作为组件,一旦游戏启动,我启用游戏对象,检查控制台窗口,一切看起来正常 .

enter image description here

然后,如果我添加NetworkManager游戏对象并将“NetworkIdentity”添加到以前的日志记录游戏对象,启动游戏,托管游戏,日志游戏对象将自动启用,然后您将在控制台窗口看到这一点 .

enter image description here

似乎Start()和Update()函数不符合它们应该是什么,我是否误解了任何有关Unity Networking的内容?

enter image description here


感谢提醒,所以我在测试中添加了“Awake()”,然后发生了更多奇怪的事情 . 具有“NetworkIdentity”的游戏对象将在StartHost()之前调用其“Awake”以在编辑器模式下启用游戏对象,但是一旦进行构建,将在StartHost()之后调用“Awake” . 这让我更加困惑 . :(

1 回答

  • 0

    每个网络身份游戏对象在场景开始时变为禁用,然后由场景管理器自动激活为统一文档:

    加载场景时,将禁用场景中具有NetworkIdentity组件的所有对象;在客户端和服务器上 . 然后,当场景完全加载时,将调用NetworkServer.SpawnObjects()来激活这些联网的场景对象 . 这将在服务器场景完成加载时由NetworkManager自动完成 - 或者可以由用户代码直接调用(更多) .

    因此,根据我的理解,对象是逐个启用的,因此代码中的日志顺序并不奇怪(每个对象一个接一个地启用,并且它们的脚本以相同的顺序开始执行) .

相关问题