๊ทธ๋ผ, int Count ๋ก ๋ก๋ํ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์๋ฃ๋์๋์ง๋ฅผ ์ฒดํฌํด์ผ ํด์ ์ฝ๋ฃจํด์ ๋๋ ค์ผ ํจ..
1 2 3 4 | C_HeroData.E_Punpkin_1.LoadF_prefabAsync(prefab => { AddPool(prefab); }); | cs |
๊ทธ๋์ BGDatabase์ addressables ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๊ณ ์ ๋ํฐ์ Addressables๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ค๊ณ ์๋ํจ.
BGDatabase์ ๋ฑ๋กํ ์์
์ ํ๋ฆฌํน์ Addressables์ ์ฃผ์ ๊ฐ์ ๊ฐ์ ธ์์ ํ๋์ฉ ๋ก๋๋ฅผ ์์ฒญ์ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private async void LoadObject() { List<Task<GameObject>> tasks = new List<Task<GameObject>>(); List<string> addresses = new List<string>(); C_HeroData hero = C_HeroData.E_Punpkin_1; addresses.Add(C_HeroData._F_prefab.GetAddressablesAddress(hero.Index)); C_EffectData effect = C_EffectData.E_Bleed; addresses.Add(C_EffectData._F_prefab.GetAddressablesAddress(effect.Index)); C_SkillData skill = C_SkillData.E_CuttingMoonlight; addresses.Add(C_SkillData._F_SkillVFX.GetAddressablesAddress(skill.Index)); foreach (var address in addresses) { Addressables.LoadAssetAsync<GameObject>(address).Completed += handle => { tasks.Add(handle.Task); AddPool(handle.Result); }; } await Task.WhenAll(tasks); GeneratePoolObjects(); } | cs |
์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋๋ ๋๊ฐ์ง๊ฐ ๋ง์ ์๋ฌ.
1. BGDatabase์ ๋ฑ๋กํ ํ๋ฆฌํน์ Address ์ฃผ์๋ฅผ ๊ฐ์ ธ์ค๋๊ฒ ๋๋ฌด ๋ถํธ => CodeGen์ผ๋ก ๋ก๋๊ฐ ์๋ฃ๋๋ฉด Task๋ฅผ ๋ฐํ๊ฐ์ผ๋ก ๋์ ธ๋ฌ๋ผ๊ณ ... ๋ฉ์ผ๋ณด๋ด๋จ์.
2. ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ถ๋ฌ์ฌ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์์ฒญํ๋ ๋ฐฉ๋ฒ์ด ๋ง์ ์๋ฌ. 3๊ฐ์ ๋ฐ์ดํฐ๋ ์์์ฝ๋์ด๊ณ ์ถํ์๋ ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ํ ๋๋ก ํ๋ฆฌํน์ ๋ก๋ํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ ์์ ์ธ๋ฐ ๋ฐ๋ณต๋ฌธ ๋ง๊ณ ์ฝ๋ ํ์ค๋ก ์ด์ฐ ์๋๋ ์ถ์..?
์ฌ๊ธฐ์๋ถํฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ..
Addressables.LoadAssetsAsync ๋ฅผ ์ฌ์ฉํ๋ ค๋๋ฐ ์๊ฐ์ฒ๋ผ ์ ์๋๋๊ฑฐ์!!!!!!!!!
1 2 3 4 5 6 7 8 9 | Addressables.LoadAssetsAsync<GameObject>(addresses, null, Addressables.MergeMode.Union).Completed += assetHandle => { IList<GameObject> loadedPrefabs = assetHandle.Result; foreach (var prefab in loadedPrefabs) { AddPool(prefab); } GeneratePoolObjects(); }; | cs |
์๋๋ Addressables์ ๋์ค์ ํ๊ณ ์บ๋ฆญํฐ ๋จผ์ ๊ตฌํ ๋ค ๋๋ด๋๊ณ ํ๋ ค๊ณ ํ๋๋ฐ ์ด์ฐํ๋ค ๋ณด๋ Addressable์ ๋จผ์ ํ๊ฒ ๋์๋ค. ์ถํ์ ์ ์ DB ์๋ฃํ ๋ค์ ํ๋์ฝ๋ฉ๋์ด ์๋๊ฑฐ ์์ ํ๋ฉด ๋ ๋ฏ... ํ ๋ค์ด๋ ์๋ ์บ๋ฆญํฐ ๋ง๋ค๋ ค๊ณ ํ๋๋ฐ ์ฉ.. ใ
๊ณ ์ํ์ด~ ํ ๋ฅํ ๋ฅ~
์ LoadAssetAsync Complete ์ฝ๋ฐฑ๋ฐ์ผ๋ฉด์ task๋ฅผ ๋ฐฐ์ด์ ๋ชจ์๋๊ณ WhenAll์ ํ๋๊ฑฐ์. Complete๋๋ Result์ ์ด๋ฏธ ํ๋ฆฌํน๊ฐ์ฒด๊ฐ ์์ํ ๋ฐ.
List> [...] null; for (int i = 0; i < 3; i++) { var task = Addressables.LoadAssetAsync("๋ฆฌ์์ค์ฃผ์").ToUniTask(); [...].Add(task); } UniTask.WhenAll([...]);
๋ด๊ฐ ์ค๋ช ํด์คฌ์๋ UniTask๋ฅผ ์ด๋ค๋ ๋ง์์ํด์คฌ๊ตฌ๋. UniTask๋ก ํ๋ฉด ์ ๋ ๊ฒ ๊ฐ๋ฅํ๋. handle.Task๋ฅผ ์ธํ์๊ฐ์์
๋ก๋๊ฐ ๋ค ์๋ฃ๋์ด์ผ GeneratePoolObjects(); ์ด๊ฒ ์คํ๋ ์ ์๊ฑฐ๋ ..
์๋ฃ ์ฌ๋ ธ๋๋ฐ..
์ด๋ฉ!?