【发布时间】:2016-08-06 05:57:41
【问题描述】:
在统一多人游戏中,玩家预制件在场景加载后生成,声明所需脚本并避免 NullReferenceException 错误的最佳方法是什么?
【问题讨论】:
标签: networking unity3d unity5 unity3d-unet
在统一多人游戏中,玩家预制件在场景加载后生成,声明所需脚本并避免 NullReferenceException 错误的最佳方法是什么?
【问题讨论】:
标签: networking unity3d unity5 unity3d-unet
我自己对多人游戏不是很熟悉,但我相信这可以通过 GameObject.Find("") 和 GetComponent 来完成。 我还偶然发现了FindObjectOfType。我不确定这是否是你要找的,但发布它并没有什么坏处。祝你好运。
【讨论】:
与其让脚本查找预制件何时生成,为什么不让预制件告诉脚本它已生成?
当没有指定用例时,很难给出任何类型的示例。
非常基本的示例(并且由于您要将其用于网络,因此您可能必须重做很多,以免您过分信任客户端):
class ScriptA : Monobehaviour () {
List<GameObject> prefabs;
public void AddPrefab (GameObject Prefab) {
prefabs.Add (Prefab)
}
}
class Prefab : Monobehaviour () {
void Start () {
FindObjectOfType(ScriptA).AddPrefab(gameObject);
}
}
这不是最好的例子,但重点是,您可能需要重新考虑架构
【讨论】: