프로그래밍/유니티2016. 11. 9. 02:28
유니티 메뉴얼에서 본 정보인데 까먹기전에 여기에 복사해논다.

코루틴은 실행을 중지하여 Unity에 제어권을 돌려주고, 그러나 계속할 때는 다음 프레임에서 중지한 곳부터 실행을 계속할 수 있는 기능입니다. C#에서 코루틴은 다음과 같이 선언합니다:

IEnumerator Fade() {
    for (float f = 1f; f >= 0; f -= 0.1f) {
        Color c = renderer.material.color;
        c.a = f;
        renderer.material.color = c;
        yield return null;
    }
}

즉, 이것은 IEnumerator 형식을 반환값으로 가지며 yield return 구문을 어디엔가 포함하고 있는 함수입니다. yield return 행은 실행을 중지하고 다음 프레임에서 실행을 재개할 수 있는 지점입니다. 코루틴을 실행하려면 StartCoroutine 함수를 사용합니다. \n

void Update() {
    if (Input.GetKeyDown("f")) {
        StartCoroutine("Fade");
    }
}



적이 많은 경우에 이 함수를 매 프레임 호출 하여 현저한 오버 헤드를 초래할 지도 모릅니다. 그러나 코루틴을 사용하여 1/10 초 간격으로 호출할 수 있습니다:

IEnumerator DoCheck() {
    for(;;) {
        ProximityCheck;
        yield return new WaitForSeconds(.1f);
    }
}

따라서 게임에 악영향을 주지 않고 체크 횟수를 비약적으로 감소시킬 수 있습니다.



StopAllCoroutines() 이라는 함수가 있는데

해당 클래스 내에서 진행되고 있는 코루틴 함수들을 전부 중지시킵니다.



보다 자세한 설명

http://unityindepth.tistory.com/21 여기에 잘 나와있습니다



그리고.. StartCoruotine(함수명()) 으로 실행한 코루틴은 StopCoroutine으로 멈출수 없다고 합니다.

함수명() 대신에 "함수명" 으로 실행해야 StopCoroutine("함수명") 으로 멈출수 있다고 하는데; 버그인지 뭔지는 알아봐야 할 것 같네요


'프로그래밍 > 유니티' 카테고리의 다른 글

유니티 비주얼스튜디오 ctrl + ' 단축키 설정법  (0) 2017.03.14
다이나믹 메시  (0) 2017.01.04
이벤트 활용  (0) 2016.11.11
유니티 기본 이벤트 함수  (0) 2016.11.11
Physics.OverlapSphere,Quaternion.Lerp  (0) 2016.11.10
Posted by JinFluenza