实例化的预制件应该从主脚本调用一个函数?

时间:2015-10-26 15:44:12

标签: c# unity3d gameobject

我想要这样的东西。

ComponentTest.cs - 此脚本附加到场景中的空游戏对象。

public class ComponentTest : MonoBehaviour {

    public GameObject boxPrefab;

    void Start () {

        GameObject temp = Instantiate(boxPrefab, new Vector3(0,0,0), Quaternion.identity) as GameObject;

        temp.GetComponent<PrefabBox> ().go = gameObject.GetComponent<ComponentTest>().Yes();

    }

    public void Yes(){
        print("yes");
    }

}

和PrefabBox.cs - 此脚本附加到预制件。

public class PrefabBox : MonoBehaviour {

    public GameObject go;

    void Start () {
        go ();
    }

}

我认为这是错误:

  

成员`PrefabBox.go'不能用作方法或委托

1 个答案:

答案 0 :(得分:2)

首先,将go对象声明为GameObject,然后为其分配一个函数,然后将其称为函数。

看起来您需要Closures,您可以在其中将函数存储到变量中并以您的方式调用它们。

这篇文章涵盖了它:http://answers.unity3d.com/questions/494640/capturing-a-variable-in-a-closure-behaves-differen.html

似乎数据类型需要Action,但最好阅读它以正确掌握它。

祝你好运。