1
У меня есть два сценария C#: ScriptOne
, который содержит IEnumerator StartSmth(){...}
и ScriptTwo
. Как я могу запустить coroutine StartSmth()
от ScriptTwo
?Unity3d StartCoroutine из другого сценария
У меня есть два сценария C#: ScriptOne
, который содержит IEnumerator StartSmth(){...}
и ScriptTwo
. Как я могу запустить coroutine StartSmth()
от ScriptTwo
?Unity3d StartCoroutine из другого сценария
Ниже приведена более подробная версия ответа 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() {}
}
От ScriptTwo вы вызываете метод в ScriptOne, запускающий сопрограмму , Используйте GetComponent(), чтобы получить ссылку на компонент ScriptOne. –
LearnCocos2D