์”ฌ์„ ๋กœ๋”ฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„์ค‘์ธ๋ฐ ๋งต์”ฌ์€ ์ผ๋ฐ˜ ๋กœ๋”ฉ, UI์”ฌ์€ additive๋กœ ํ•ด์„œ ๋กœ๋”ฉํ•˜๋Š”๊ฑธ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘๊ฐœ์˜ ์”ฌ์ด ์ „๋ถ€ ๋กœ๋”ฉ์ด ๋˜๋ฉด ์”ฌ์„ ํ™œ์„ฑํ™” ์‹œํ‚ค๊ณ  ์‹ถ์€๋ฐ additive๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์”ฌ์€ progress๊ฐ€ ๊ณ„์† 0์ธ๋ฐ ์›๋ž˜ ์›๋ž˜ additive๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์”ฌ์€ asyncoperation์„ย 

์ด์šฉํ•ด์„œ progress๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์—†๋‚˜์š”?? ๋ฐ‘์—๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.


ย  ย  private IEnumerator Loading()

ย  ย  {

ย  ย  ย  ย  yield return null;


ย  ย  ย  ย  List<AsyncOperation> ops = new List<AsyncOperation>();


ย  ย  ย  ย  ops.Add(SceneManager.LoadSceneAsync((int)_scene1));

ย  ย  ย  ย  ops.Add(SceneManager.LoadSceneAsync((int)_scene2,LoadSceneMode.Additive));


ย  ย  ย  ย  foreach (var op in ops)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  op.allowSceneActivation = false;

ย  ย  ย  ย  }


ย  ย  ย  ย  yield return null;


ย  ย  ย  ย  // ์ด๋ถ€๋ถ„์€ ๋จ

ย  ย  ย  ย  while(!ops[0].isDone)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  Debug.Log(ops[0].progress);


ย  ย  ย  ย  ย  ย  if (ops[0].progress >= 0.9f)

ย  ย  ย  ย  ย  ย  ย  ย  break;


ย  ย  ย  ย  ย  ย  yield return null;

ย  ย  ย  ย  }


ย  ์ด ๋ถ€๋ถ„์€ progress๊ฐ€ ๊ณ„์† 0์œผ๋กœ ๋œธ ์”ฌ์€ ๋‘๊ฐœ ๋ถˆ๋Ÿฌ์ง€๊ณ  ์žˆ๋Š”๊ฑฐ๋Š” ํ™•์ธ

ย  ย  ย  ย  while(!ops[1].isDone)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  Debug.Log(ops[1].progress);


ย  ย  ย  ย  ย  ย  yield return null;

ย  ย  ย  ย  }


ย  ย  ย  ย  yield return null;


ย  ย  ย  ย  foreach (var op in ops)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  op.allowSceneActivation = true;

ย  ย  ย  ย  }



ย  ย  }