유니티 메뉴얼에서 본 정보인데 까먹기전에 여기에 복사해논다.
코루틴은 실행을 중지하여 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 |