๋์ถฉ Class A B C๊ฐ ์๋ค๊ณ ํ๋ฉด
A ๋ฉค๋ฒ๋ก B list๊ฐ ์๊ณ
B ๋ฉค๋ฒ๋ก C list๊ฐ ์์
์ฌ๊ธฐ์ C๋ ์์ ์ ๋ถ๋ชจ B๋ฅผ ๋นจ๋ฆฌ ์ฐพ์ผ๋ ค๊ณ ๋ฉค๋ฒํ ์ํค๊ณ ์ถ์๋ฐ
์ฌ๊ธฐ์ C -> B๋ A๋ง ์ฝ๊ธฐ ๊ฐ๋ฅํจ, C๊ฐ ์์ฒด์ ์ผ๋ก ์์ ์ ์ฐธ์กฐํ๋ B๋ฅผ ๋ชป์ฝ๋ ๊ตฌ์กฐ
๊ทธ๋๋ง ์ง๊ธ ํ๊ณ ์๋๊ฒ C์๊ฒ ์ฝ๊ฐ B๋ก ๊ฐ๋ ๊ฐ์ ์ฃผ์๋ฅผ ์
( ์๋ฅผ๋ค์ด ๋ถ๋ชจ B๋ฅผ ์ง์นญํ๊ธฐ ์ํด A -> B_list์ B index๋ฅผ ์ ์ฅํ๋ค๋๊ฐ, A.GetB(C) => ( A.B_List( C.B_index ) ) ์ด๋ฐ์์ผ๋ก )
๊ทผ๋ฐ ์ข ๋ถํธํด์ ๊ฐ๊ฐ์ C์ A๋ง ์ฝ๊ธฐ๊ฐ๋ฅํ B๋ ํผ๋ฐ์ค๋ฅผ ์ ์ฅํ๊ณ ์ํ..
๊ฐ๋ฅ?
๊ทธ๋ฅ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์ข ํด๋ผ
์๋ฅผ ๋ค์ด A๋ฅผ ์บ๋ฆญํฐ, B๋ฅผ ์ธ๋ฒคํ ๋ฆฌ, C๋ฅผ ์ฌ๋กฏ์ด๋ผ๊ณ ํด๋ณด์. ์ฌ๋กฏ์ด ์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์ฐพ์ ํ์๊ฐ ์๋๊ฑฐ์? ๊ทธ๋ฆฌ๊ณ ์ ์บ๋ฆญํฐ๋ Slot๋ง์ผ๋ก Inventory๋ฅผ ์ฐพ์ ํ์๊ฐ ์๋๊ฑฐ์? ๊ตณ์ด ํ์๋ฉด Inventory์๊ฒ i ์ฌ๋กฏ์ ์ง์ ํ๋ฉด๋๋๊ฑฐ ์๋๊ฐ? ์ฌ๋กฏ์ด ์ธ๋ฒคํ ๋ฆฌ์ ๋ช๋ฒ์งธ ์ฌ๋กฏ์ธ์ง ์ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์์? ๋ด๊ฐ ๋ญ๊ฐ ์๋ชป์ดํดํ๋
C๊ฐ ๋ฐ์ํ๋ ์ธ๋ฒคํ ๋ฆฌ ์์ดํ GUI๊ฐ ๋๋๊ฑฐ์ง ํด๋ฆญ๊ฐ์ ์ด๋ฒคํธ ๋ฐ์ ์, ์์ดํ ์ด ์ด๋ฒคํธ๋ฅผ ํธ์ถํ๊ณ ๊ทธ๋ผ ํด๋น ์ด๋ฒคํธ๋ก ์ฌ๋กฏ์ ๋ณํ๊ฐ ์๊ธธ ๋ ๊ฒฐ๊ตญ C๋ง์ผ๋ก B๋ฅผ ์ฐพ์์ผ๋จ
์ ๊ทธ๋ฐ๊ฑฐ๋ฉด ๊ทธ๋ ๊ฒ ํ์ง ๋ง๊ณ , ์ฌ๋กฏ ํด๋ฆญ๊ฐ์ ์ด๋ฒคํธ ๋ฐ์์ ๋ํ ์ฑ ์์ B์ธ ์ธ๋ฒคํ ๋ฆฌ๊ฐ ๊ฐ์ง๋ฉด ๋ ๊ฑฐ ๊ฐ์.
์ด๊ฒ poe๊ฐ์ ํ๋์ ์ฌ๋กฏ์ ์ฌ๋ฌ C๊ฐ ๋ค์ด๊ฐ๋ ๊ฐ๋ ์ด๋ผ ๊ทธ๋ผ, ๊ทธ๋์ B์ ListC๊ฐ ์๋๊ฑฐ๊ตฌ ์ ์๋์ค๋๊ฑฐ๋ณด๋ ์ข ์ฐพ๊ธฐ ์ด๋ ค์ด ๋ง์ด๋ํ ๋ฌธ๋ฒ์ธ๊ฑฐ๊ฑฐ ๊ฐ๊ธฐ๋ ํ๋ค ใณใณ
UIInventoryํด๋์ค์ OnClickSlot(SlotUI ui) ์ด๋ ๊ฒํ๊ณ UIInventory์ Dictionary slotMap;์ ๋ง๋ค๊ณ UIInventory๊ฐ Initํ๋ ๊ณผ์ ์์ ๊ฐ ์ฌ๋กฏUI๋ค์๊ฒ UISlot.OnClicked(SlotUI ui)์ OnClickSlot์ ์ฝ๋ฐฑ์ผ๋ก ๋ฃ๊ณ OnClicked(SlotUI ui) => if(slotmap[ui] != null) {Slot ์ด๋ฒคํธ}๋ฅผ ์ํํ๋ฉด ๋ ๊ฑฐ ๊ฐ์๋ฐ.
Dictionary(SlotUI, Slot)์ ์ <,>์ฌ๊ธฐ ์์ ๋ฃ์ผ๋ฉด ์ ๋ ๊ฒ ์ฌ๋ผ์ง๋ ใ ใ
ใ ใ ๋์ ๋๋ฆฌ๋ก 1:1๋งค์นญ์ด ์ ์ผ ์ต์ ์ธ๊ฑฐ๊ฐ๋ค ๊ณ ๋ง์ด!
๊ทผ๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ๋์ค์ ์ ์ง๋ณด์ํ ์ฌ๋๋ ์๊ฐํด์ค์ผํ์ง ์์๊น?
์์์ ๋ญ๊ฐ ๋ถ์กฑํ๊ฒ ์ค๋ช ํ๊ฒ ์๋๋ฐ, ์ฌ๋กฏ์์ ์์ดํ ์ ์ฌ์ฉํ๋ ์กด์ฌ๊ฐ Character๋ผ๋ฉด ํ์คํ๊ฒ CharacterUIManager์์ UseSlotItem(Character,UIInventory,int slotIndex) {character.UseItem(Inventory,intSlotIndex} ์ด๋ฐ ์ฑ ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ธ์ผ๋ ๋ฏ. InventoryUI์์ UISlot๋ค์๊ฒ ๊ฑฐ๋ ์ฝ๋ฐฑ์ ๋จ์ํ๊ฒ InventoryUI๊ฐ UISlot์๊ฒ ์์ฒญํ๋ ๊ฐ๋ ์ด์ด์ผํ์ง ์ฌ๊ธฐ์ Character ๊ฐ๋ ์ด ๋ค์ด๊ฐ๋ฉด ์๋จ. ์์์ ์ค๋ช ํ๊ฑด ์ ๋ง๋ก InventoryUI์ ์ฅ์์ OnClickSlot์ ์ํํ์ ๋ ๋ฒ์ด์ ธ์ผ ํ๋ ์ผ์ ๋ํ ์ฑ ์๋ง์ด ๋ค์ด๊ฐ์ผํ๊ณ .. ๋ญ ์ด๋ฐ๊ฑด ์์์ ํ๊ฒ ์ง๋ง ๋์น๊ฑฐ ๊ฐ์์
๋ ์ ์์์์ ์ธ๋ฒคํ ๋ฆฌ ๊ธฐ๋ฅ์ static ํจ์๋ค๋ก ๊ตฌ์ฑํด์ ์์ดํ ์์ ๊ทธ๋ฅ ์ธ๋ฒคํ ๋ฆฌ ํจ์ ๋ฐ๋ก ๋ถ๋ฅผ ์ ์๊ฒ ํ์
์ธ๋ฒคํ ๋ฆฌ ์ฌ๋กฏ์ด ๊ฐ์ง๋ ๊ธฐ๋ฅ์ ์ธ๋ฒคํ ๋ฆฌ์์ ์ธ์๋ก ์ ํด์ค ์์ดํ gui๋ฅผ ์๊ธฐํํ ์ ๋ ฌํ๋ ํจ์, ์์ดํ gui๋ฅผ ์์ ๋๋๊ทธํ์ ๋ ์ ํฉํ์ง ํ์ธํ๋ ๊ธฐ๋ฅ, ๋๋๊ทธํ์ ๋ ์ธ๋ฒคํ ๋ฆฌ ํจ์ ๋ถ๋ฌ์ ๋๊ฒจ์ฃผ๋ ๊ธฐ๋ฅ๋ง ๋์