2015-10-26 7 views
1

Я хочу что-то вроде этого.Мгновенная сборка должна вызывать функцию из главного сценария?

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(); 
    } 

} 

Я получаю это как ошибку:

The member `PrefabBox.go' cannot be used as method or delegate

ответ

2

Прежде всего, go объект объявлен как GameObject но затем присвоить функцию к нему, а затем вызвать его как функцию.

Похоже, вы хотите закрытие, в котором вы можете хранить функции для переменных и называть их так, как вы.

Это сообщение охватывает его: http://answers.unity3d.com/questions/494640/capturing-a-variable-in-a-closure-behaves-differen.html

Кажется, что тип данных должен быть Action, но лучше, чтобы читать на нем, чтобы понять это правильно.

Удачи.