0. ๊ฒ์ ์ค๋ฒ ๋, ๋ค๋ฅธ ์ฝ๋(.cs)๋ก ๋ถ๋ฆฌ๋์ด ์๋, ui ๋์ฐ๊ธฐ ํจ์๋ฅผ ์คํํ๊ณ ์ถ์ด
= ui ํจ์๋ฅผ public/serializable ํ ๋ค์ ์ง์ ๋ถ๋ฅธ๋ค? = ๋ณ์
๋์ค์ ์ฝ๋ ์์ ํ๋ฉด์ ์ข๋๋ด๋ผ
1. ๋ธ๋ฆฌ๊ฒ์ดํธ
ํจ์ ๋ณด๊ดํจ, ํฌ์ธํฐ
ui ํจ์/ ๊ฒ์์ค๋ฒ ์์ ๋ฑ์ ํจ์ ๋ณด๊ดํจ์ ๋ฃ์ ๋ค์,
ํจ์ ๋ณด๊ดํจ ์คํ! ํ๋ฉด ์์ ๋ค์ด๊ฐ ํจ์ ๋ค ์คํ๋๋๊ฒ ๋ธ๋ฆฌ๊ฒ์ดํธ
๋จ์ . ์ฃผ์ธ(์ด๋ฒคํธ ๋ฐ์๊ธฐ)/ ์ต์ ๋ฒ(๋ฆฌ์ค๋) ๊ตฌ๋ถ ์๋จ.
๋ฆฌ์ค๋ (ui ์ชฝ)์์ ์ค์๋ก ๋ณด๊ดํจ์ ์ด๊ธฐํ ์์ผ๋ฒ๋ฆด ์ ์์.
1-2. ๋ธ๋ฆฌ๊ฒ์ดํธ event
์ฃผ์ธ / ์ต์ ๋ฒ(๋ฆฌ์ค๋) ๊ตฌ๋ถ ์ํด
1. unity event
์ ๋ํฐ ์ธ์คํํฐ๋ก ์ฌ์ฉํ๋ ๋ธ๋ฆฌ๊ฒ์ดํธ ์ด๋ฒคํธ
์ธ์คํํฐ์์ ์ฐ๊ฒฐํด์ผ ํ๊ธฐ ๋๋ฌธ์, ๊ฐ์ ๊ทธ๋ฃน/ํ๋ฆฌํน ๊ตฌ์กฐ์์ ์ฌ์ฉ
= ๋ก์ปฌ(๊ฐ์ ์ง์ญ) ์ฐ๊ฒฐ์์ ์ข์
+ ๋ธ๋ฆฌ๊ฒ์ดํธ์๋ ๋ค๋ฅด๊ฒ, ๋ค๋ฅธ ํํ์ ํจ์๋ (๋ณด๊ดํจ์) ๋ฑ๋ก ๊ฐ๋ฅ
(๋ธ๋ฆฌ๊ฒ์ดํธ๋ ๊ฐ์ ํํ๋ง - int delegate ๋ฉด int ํจ์๋ง ๋ฃ๋ - ๋ฑ๋ก ๊ฐ๋ฅ)
1. scriptable object event
์ ๋ํฐ ์ด๋ฒคํธ(unity event)๋ฅผ ์ฌ์ฉํด ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ๊ฒฐ
์ฝ๋๋ก ์ ์ธ, ์ฌ์ฉ
= ๊ธ๋ก๋ฒ(์ ์ญ) ์ฐ๊ฒฐ์ ์ข์
์์ ํํ๋ก ์ค๊ฐ์์ ์ฐ๊ฒฐ
์ฃผ์ธ - ์คํฌ๋ฆฝํฐ๋ธ ์ค๋ธ์ ํธ ์ด๋ฒคํธ(SOe) - ์ต์ ๋ฒ(๋ฆฌ์ค๋)
1. ์ฃผ์ธ๋ soe ์ธ์คํํฐ ๋๋๊ทธ ์ค ๋๋กญ
1. ์ต์ ๋ฒ๋ soe ์ธ์คํํฐ ๋๋๊ทธ ์ค ๋๋กญ
๋๊ฐ์ด [Serializable] ์ธ์คํํฐ ๋๋๊ทธ ์ค ๋๋กญ ํ ๋
์ฃผ์ธ <- ์ต์ ๋ฒ ์ง์ ๋ฃ๊ธฐ
= ๋ณ์
์ฃผ์ธ <- SOe
์ต์ ๋ฒ <- SOe ์ค๊ฐ์ธ ๋ฃ๊ธฐ
= ์๋ณ์
์ด๋ฐ ๋๋
์ ์ฉ์ถ
scriptable object event ์ด๊ฑฐ ์ธ ๋ ์กฐ์ฌํด. addressables๋ ์ฎ์ด๋ฉด ํ๋ ์ดํ ๋ ์ค๋ณต ์ธ์คํด์คํ๋ผ์ ๊ผฌ์ธ๋ค. ์ ๋ช ํ ๋ถ์์ฉ์.
https://forum.unity.com/threads/duplicate-scriptable-object-issue-and-how-to-avoid.1176476/
์ด๋๋ ์๋ธ ์๋๊ฑฐ ๋ ํผ๋ฐ์ค ํ๋ฉด ๋น๋ํ ๋ ์ค๋ณต ์์ฑ๋๋ค๋๋ฐ ๋ชจ๋ฅด๊ฒ ๋ค
https://forum.unity.com/threads/asset-duplication.1554836/#post-9685868
๊ณต์ ๋
ํ๋ฆฌ๋ฉ์ ์ด๋๋ ์๋ธ๋ก ๋งํฌํ๋ผ๋๋ฐ
ํด๋น SO๋ฅผ ์ฌ์ ๋ฃ์ด๋๋ฉด ๋ฐ๋ก ์์ฑ๋๋๊น ์ ๋ถ ์ด๋๋ ์๋ธ์ ๋ฃ์ด์ผ ๋จ. ๊ทผ๋ฐ ๋ ์ข ์จ๋ณด๋ค๊ฐ ๊ท์ฐฎ์์ ์ ํจํด ์์ฐ๊ณ ์์.
๋ ๋ง๊ณ UniRx ์ฐ๋ ์ฌ๋ ์๋
์ ๋ณด์ถ
https://blog.unity.com/engine-platform/addressables-planning-and-best-practices
https://docs.unity3d.com/kr/current/Manual/AssetBundles-Preparing.html