如何在对象生成后访问脚本?

时间:2016-08-06 05:57:41

标签: networking unity3d unity5 unity3d-unet

在Unity多人游戏中,播放器预制在场景加载后产生,声明所需脚本的最佳方法是什么,并避免出现NullReferenceException错误?

2 个答案:

答案 0 :(得分:0)

我自己并不熟悉多人游戏,但我相信这可以通过GameObject.Find(“”)和GetComponent来完成。 我偶然发现了FindObjectOfType。我不确定这是不是你要找的东西,但发布它并没有坏处。祝你好运。

答案 1 :(得分:0)

当预制件产生时,为什么不让预制件告诉它产生的脚本,而不是让脚本查找?

当未指定用例时,很难给出任何类型的示例。

真的是基本的例子(因为你要将它用于网络,你可能需要重做很多,所以你不要太信任客户端):

class ScriptA : Monobehaviour () {
    List<GameObject> prefabs;

    public void AddPrefab (GameObject Prefab) {
        prefabs.Add (Prefab) 
    }
}

class Prefab : Monobehaviour () {
    void Start () {
        FindObjectOfType(ScriptA).AddPrefab(gameObject);
    }
}

这不是最好的例子,但重点是,您可能需要重新考虑架构