2016-09-10 3 views
1

두 개의 텍스트를 표시하는 사이에 지연을 만들려고합니다. 그러나 그것은 작동하지 않습니다. 코드는 다음과 같습니다StartCoroutine이 작동하지 않습니다.

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 
public class Class1: MonoBehaviour { 

public Text text1,text2; 
public bool inArea = false; 
void Update() { 

if (!inArea) 
{ 
    inArea = true; 
    text1.text = ""; 
    text2.text = "text2"; 
    StartCoroutine(timer()); 
    text2.text = "text3";    
    } 

} 
IEnumerator timer() 
{ 
    yield return new WaitForSeconds(100); 
} 

가 나는 또한 WaitForSecondsRealTime을 시도했습니다(). 그것은 또한 작동하지 않습니다.

답변

1

내가 조금 생각하면 오해했습니다.

coroutine은 yield으로 지연되지 않으면 다른 내용 (귀하의 경우 text2.text = "text3")과 병렬로 실행됩니다 (이 경우 coroutine에서 coroutine을 호출하거나 내부적으로 이것을 수행 할 javascript를 사용해야 함) .

void Update() 
{ 

    if (!inArea) 
    { 
     inArea = true; 

     StartCoroutine(timer());   
    } 

} 

IEnumerator timer() 
{ 
    text1.text = ""; 
    text2.text = "text2"; 

    yield return new WaitForSeconds(100); 

    text2.text = "text3"; 
} 

또는 당신은 너무 IEnumerator Updatevoid Update을 변경하여 Update 코 루틴을 만들 수 :

당신이 중 하나는 다음과 같이 지연에 의해 영향을해야 코 루틴에 모든 코드를 이동해야합니다.

현재 사례에서 첫 번째 문제가 없어야합니다.

+1

많은 새로운 유니티 프로그래머들은 코 루틴 뒤에 어떤 일이 일어나는 지 이해하지 못하고 어떻게 작동하는지 그리고이 문제와 관련이 있습니다. – Programmer

+0

도움을 주셔서 감사합니다. 나는 실제로 코 루틴의 일을 모른다. 나는 지연에 대해 조사하고 그런 종류의 해결책을 발견했다. 감사 –