2014-09-18 2 views
1

У меня есть два сценария C#: ScriptOne, который содержит IEnumerator StartSmth(){...} и ScriptTwo. Как я могу запустить coroutine StartSmth() от ScriptTwo?Unity3d StartCoroutine из другого сценария

+2

От ScriptTwo вы вызываете метод в ScriptOne, запускающий сопрограмму , Используйте GetComponent (), чтобы получить ссылку на компонент ScriptOne. – LearnCocos2D

ответ

1

Ниже приведена более подробная версия ответа LearnCocos2D.

Я предполагаю, что ваши сценарии живут на разных игровых объектах (если вы не можете игнорировать ссылку на игровой объект A в коде ниже). Вам нужно сделать что-то вроде следующего:

script1 на GameObject

public class Script1 : MonoBehaviour { 

    void Start() {} 
    void Update() {} 

    public void MethodToCall(){ 
     //Start coroutine here 
    } 
} 

Скрипт2 на GameObject B

public class Script2 : MonoBehaviour{ 

    public GameObject gameObjA; //reference to the game object the other script lives on. (this can also be done dynamically) 

    void Start(){ 
     //logic to call target method on Script1 
     var script1 = gameObjA.GetComponent<Script1>(); 
     script1.MethodToCall(); 
    } 

    void Update() {} 
} 
Смежные вопросы