BGDatabase์˜ CodeGen์„ ์‚ฌ์šฉํ•ด์„œ ๋กœ๋“œํ•˜๋ ค๋‹ˆ๊น Task๋ฅผ ๋ฐ˜ํ™˜์„ ์•ˆํ•˜๋„ค. ์•„๋ž˜์˜ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋Š”๊ฒŒ ๊ฐ€์žฅ ๊ฐ„๊ฒฐํ• ๊ฑฐ ๊ฐ™๊ธด ํ•œ๋ฐ

๊ทธ๋Ÿผ, 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.MergeMode.Union๋ฅผ ์•ˆ ๋„ฃ์–ด๋„ ๋˜์—ˆ๊ณ  ๋กœ๋“œ๊ฐ€ ๋ ๋•Œ๋งˆ๋‹ค ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋Š”๋ฐ ๋ฐ”๋€ ๋‚ด์šฉ์œผ๋กœ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋กœ๋“œ๋˜๋ฉด ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๋€๋“ฏ ์‹ถ๋‹ค!!!
์ผ๋‹จ ์›ํ•˜๋Š” ๊ฑด ํ•˜๊ธด ํ–ˆ๋Š”๋ฐ null << ์š”๊ฑฐ ๋“ค์–ด๊ฐ„๊ฒŒ ๋ง˜์— ์•ˆ๋“œ๋„ค...


์›๋ž˜๋Š” Addressables์€ ๋‚˜์ค‘์— ํ•˜๊ณ  ์บ๋ฆญํ„ฐ ๋จผ์ € ๊ตฌํ˜„ ๋‹ค ๋๋‚ด๋†“๊ณ  ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์–ด์ฐŒํ•˜๋‹ค ๋ณด๋‹ˆ Addressable์„ ๋จผ์ €ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ถ”ํ›„์— ์œ ์ €DB ์™„๋ฃŒํ•œ ๋’ค์— ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ๋Š”๊ฑฐ ์ˆ˜์ •ํ•˜๋ฉด ๋ ๋“ฏ... ํ† ๋„ค์ด๋„ ์˜๋Š” ์บ๋ฆญํ„ฐ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ฉ.. ใ