-
[3D] 코루틴 사용하기Unity(유니티) 2022. 4. 20. 13:14
* Awake
게임이 시작되기 전에, 모든 변수와 게임의 상태를 초기화하기 위해서 호출
Awake함수는 오브젝트들 사이에서 임의의 순서로 호출되며, 스크리트 간의 참조를 설정하기 위해 Awake를 사용하고, 정보를 보내고 받는 경우에는 Start를 사용해야 함 ( Start보다 먼저 실행됨 )
* StartCoroutine
public Coroutine StartCoroutine(IEnumerator routine);
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ExampleClass : MonoBehaviour { private void Start() { print("Starting" + Time.time); StartCoroutine(WaitAndPrint(2.0F)); print("Before WaitAndPrint Finishes" + Time.time); } IEnumerator WaitAndPrint(float waitTime) { yield return new WaitForSeconds(waitTime); print("WaitAndPrint" + Time.time); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ExampleClass : MonoBehaviour { IEnumerator Start() { print("Starting" + Time.time); yield return StartCoroutine(WaitAndPrint(2.0F)); print("Before WaitAndPrint Finishes" + Time.time); } IEnumerator WaitAndPrint(float waitTime) { yield return new WaitForSeconds(waitTime); print("WaitAndPrint" + Time.time); } }
public Coroutine StartCoroutine(string methodName, object value = null);
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ExampleClass : MonoBehaviour { IEnumerator Start() { StartCoroutine("DoSomething", 2.0F); yield return new WaitForSeconds(1); StopCoroutine("DoSomething"); } IEnumerator DoSomething(float someParameter) { while (true) { print("DoSomething Loop"); yield return null; } } }
[MainScript]
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { [SerializeField] private int a; private void Awake() { Debug.Log("Awake Start"); } void Start() { Debug.Log("Hello World"); a = 1; StartCoroutine(coru()); //StartCoroutine("coru"); 문자열을 사용할 땐 매개변수 하나밖에 사용 못함 } void Update() { } IEnumerator coru() { yield return new WaitForSeconds(3f); Debug.Log(a); a++; if (a == 11) { StopCoroutine(coru()); } else StartCoroutine(coru()); //코루틴 반복 실행 메모리 부담을 적게(invoke는 되도록 쓰지 말 것) //StopCoroutine(coru()); } }
'Unity(유니티)' 카테고리의 다른 글
[3D] Raycast 활용하기(Ray, RaycastHit,Instantiate) (0) 2022.04.22 [JohnLemon 3D] 첫 번째 스크립트 작성하기(void Start) (0) 2022.04.20 [3D] 오브젝트 이동구현 및 애니메이션 적용 -3 (0) 2022.04.20 [3D] 오브젝트 이동구현-2 (0) 2022.04.20 [3D] 오브젝트 이동 구현-1 (0) 2022.04.20