所以我添加了一个名为" HostGame"的脚本。到我的网络管理员和#34;创建大厅"按下按钮," HostGame"触发启动匹配匹配的功能。当我按下离开游戏按钮时,一个不同的脚本将我从匹配中断开,游戏将更改回大厅场景,但是创建大厅按钮已失去对主机游戏脚本的引用,即使网络管理器从未进行过程。
我添加了一个" OnDisable"活动到#34; HostGame"当它被禁用时写入控制台,这是我按下离开游戏的那一刻" HostGame"被禁用了。
有什么想法吗?
由于
答案 0 :(得分:0)
如果我说得对,你在大厅场景中的GameObject N
上安装了NetworkManager,并设置了Dont Destroy On Load
属性。
此外,您在场景中有另一个GameObject R
,引用N
。
现在发生这种情况:
N
(因为DontDestroyOnLoad)被销毁。N
(因为DontDestroyOnLoad)被销毁。N
#1和N
#2和一个NetworkManager,因为原始版本从未被销毁过,但你也加载了一个来自" Lobby.scene&#的新实例34; R
已从" Lobby.scene"和参考文献N
#2 Awake()
,检测到已有另一个NetworkManager,并销毁自身及其GameObject N
#2 R
现在有一个缺失的引用,因为N
#2不再存在您可以通过将NetworkManager上的LogLevel
设置为" Developer"来验证这是否是问题。返回大厅后,您应该在控制台中看到以下日志输出:
Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will not be used.
我对这个问题的解决方案通常是在场景中没有NetworkManager,而是在游戏启动时从代码中实例化它。这样我就可以完全控制它的生命周期。