프로젝트 작업중에 순차적으로 처리할 코드를 줄이다 보니 아래의 테스트코드를 작성하게 되었음.
왜 싱글턴을 사용했는지가 중요한게 아니므로 넘어가고 흐름만 보도록 하자.
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test : MonoBehaviour{IEnumerator Start(){yield return null;bool checkSum = false;for (int i = 0; i < 10; i++){checkSum = false;Test1.Instance.CallBackTest((success) => { checkSum = success; });yield return new WaitUntil(()=>checkSum);}}}public class Test1 : MonoBehaviour{#region singletonprivate static volatile Test1 instance;private Test1() { }public static Test1 Instance{get{if (instance == null){GameObject go = new GameObject();instance = go.AddComponent<Test1>();}return instance;}}#endregionAction<bool> mCB;public void CallBackTest(Action<bool> _cb){mCB = _cb;StopCoroutine("StartCallBack");StartCoroutine("StartCallBack");}IEnumerator StartCallBack(){yield return new WaitForSeconds(UnityEngine.Random.Range(0.5f, 3f));if (mCB != null)mCB.Invoke(true);}}
흐름은 Test 클래스 Start 함수에서 반복문으로 시작.
이후 지역변수 checkSum을 이용해 Test1쪽 콜백을 받으면 true로 변경되기 전까지 waituntil에서 대기하고,
checksum이 true로 되면 다음으로 진행되는 구조.
뭐 팁이랄것도 없이 아주 간단한 구조이긴한데, 눈으로 봐야 직성이 풀리는 성격이기도 하고 생존기록으로 남기고자..'ㅅ';
'Unity > 스크립트' 카테고리의 다른 글
코루틴 문제 (0) | 2018.06.21 |
---|---|
Color.Lerp 함수를 이용해 A 컬러에서 B컬러로 자연스럽게 변경하기 (0) | 2017.04.27 |
Facebook 초기화시 accesstoken 문제 (0) | 2016.08.23 |
Delegate 비교 (1) | 2016.05.17 |
Unity 에서의 멀티쓰레드 구현 (0) | 2016.04.20 |
WRITTEN BY
,