๐ป MSW X Super Hackathon 2022 ์ฐธ์ฌ๋ฅผ ํตํด ํ์ตํ ๋ด์ฉ ๋ก๊ทธ์ ๋๋ค.
๋ ํ์ผ๋ก ์ต๋ํ ๋ด์ฉ์์ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
โ ๏ธ ๋ชฉ์ฐจ โ ๏ธ
- UI ๊ตฌ์ถ
- ์์ดํ
์์ฑ ๋ก์ง
- ํค๋ณด๋ i ๋ฅผ ๋๋ ์ ๋, ์ธ๋ฒคํ ๋ฆฌ ์ฐฝ ์์ฑ
- Inventorylogic ๊ตฌํ
- Additem ํจ์
- ItemCount ํจ์
๐ฅ UI ๊ตฌ์ถ
์ฐ์ MSW ์์ฒด์ ์ผ๋ก ์ธ๋ฒคํ ๋ฆฌ UI ๊ฐ ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์์ฝ๊ฒ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
์ข์ธก ์๋จ์ ๊ฐ์ฅ ์ค๋ฅธ ์ชฝ์ ๋ณด์ด๋ UI ์์ด์ฝ์ ํด๋ฆญํ๋ฉด,
์ด ์ฐฝ์ด ์์ฑ๋๋๋ฐ
์ฌ๊ธฐ์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ํด๋ฆญํ๋ฉด
์ธ๋ฒคํ ๋ฆฌUI ๊ฐ ์์ฑ๋๋ค
์ถ๊ฐ์ ์ผ๋ก inventoryUI , slotUI ๋ ๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๋ค.
๊ธฐ์ด์ ์ผ๋ก ์์ฑ๋๋ ์์คํ ์ด ๊ตฌ์ถ๋์ด ์๊ธฐ ๋๋ฌธ์
์ฐ๋ฆฌ๋ ์์ดํ ์ ์์ฑํ๊ฑฐ๋ ์ง์ฐ๋ ๋ถ๋ถ, ๋ค๋ฅธ ๋ถ๊ฐ์ ์ธ ๋ถ๋ถ์ ๊ตฌํํ๋ฉด ๋๋ค.
๐ฅ ์์ดํ ์์ฑ ๋ก์ง
๊ธฐ๋ณธ์ ์ธ UI ํ๊ฒฝ์ ๊ตฌ์ถํ๋ค๋ฉด , ์์ดํ ์ ์์ฑํ๋ ์ฝ๋๋ฅผ ์ง์ผํ๋ค.
๊ตฌํํด์ผํ ๋ถ๋ถ์
- ํค๋ณด๋ i ๋ฅผ ๋๋ ์ ๋, ์ธ๋ฒคํ ๋ฆฌ ์ฐฝ ์์ฑ
- Inventorylogic ๊ตฌํ
- Additem ํจ์
- ItemCount ํจ์
๐ ํค๋ณด๋ i ๋ฅผ ๋๋ ์ ๋, ์ธ๋ฒคํ ๋ฆฌ ์ฐฝ ์์ฑ
์ฐ์ ์ ์ผ๋ก ํค๋ณด๋๋ฅผ ๋๋ ์ ๋ ๋ฐ์ํ๋ keydownEvent ๋ฅผ ์ฌ์ฉํ์ฌ
i ๋ฅผ ํด๋ฆญํ์ ๋, inventory ๊ฐ ์ด๋ฆฌ๋๋ก ์ฝ๋๋ฅผ ๊ตฌํํด์ฃผ์๋ค.
inventory UI Entity ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ด๊ฐ์๋ UIcomponent ์ Handler ๋ฅผ ์ถ๊ฐํด์ ์์ฑํ๊ณ ,
i ๋ฅผ ๋๋ ์ ๋, ์ธ๋ฒคํ ๋ฆฌ๊ฐ ์ด๋ ค์์ง ์๋ค๋ฉด UI Enable ์ true ๋ก ๋ฐ๊พธ๊ณ ,
์ธ๋ฒคํ ๋ฆฌ๊ฐ ์ด๋ฏธ ์ด๋ ค์๋ค๋ฉด UI Enable ์ false ๋ก ๋ณ๊ฒฝ์์ผ ๊บผ์ฃผ๋ ์ฝ๋๋ฅผ ์งฐ๋ค.
์ด๋ ๊ฒ๋ง ์ง๋ฉด ๋์๊ฐ์ง ์๋๋ค.
UIpopup ๋ก์ง์ UpdateState ๋ฅผ ๋ฐ์๋ณด์ด๋ ๊ฒ๊ณผ ๊ฐ์ด ์ํ๋ณ๊ฒฝ์ ํด์ค์ผํ๋ค.
์ฆ ์ ๋ฆฌํ์๋ฉด
i๋ฅผ ๋๋ ์ ๋, ์ธ๋ฒคํ ๋ฆฌ๊ฐ ์ด๋ ค์์ง ์๋ค๋ฉด ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์ด์ด์ฃผ๊ณ , ์ํ๋ฅผ Popup ์ผ๋ก ๋ณ๊ฒฝ.
i๋ฅผ ๋๋ ์ ๋, ์ธ๋ฒคํ ๋ฆฌ๊ฐ ์ด๋ฏธ ์ด๋ ค์๋ค๋ฉด ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ๋ซ์์ฃผ๊ณ , ์ํ๋ฅผ IDLE ๋ก ๋ณ๊ฒฝ.
๐ Inventorylogic ๊ตฌํ
๋์ค์ ๋ค๋ฅธ component ์์ ๋ถ๋ฌ์ค๊ธฐ ํธํ๋๋ก ๋ก์ง์ผ๋ก ๊ตฌํ์ ํด์ฃผ์๋ค.
(+ ๋ก์ง์ ๋ถ๋ฌ์ค๋ ค๋ฉด _inventorylogic. ~ ์ด๋ ๊ฒ ์ธ๋๋ฐ๋ฅผ ์ถ๊ฐํด์ ๋ก์ง ์ด๋ฆ์ ์ฐ๋ฉด ๋๋ค. )
property ๋ ์ด๋ ๊ฒ ์ธ๊ฐ๋ฅผ ์ถ๊ฐํ๊ณ , ๋์ค์ ๋ฐ์์ ์ค๋ช ํ ๊ฒ์ด๋ ๋์ด๊ฐ์.
๊ธฐ๋ณธ์ ์ผ๋ก ์์ดํ ์ ์ถ๊ฐํ ๋ ์ฌ์ฉ๋๋ ํจ์๋ฅผ ๊ตฌํํ๋ค.
์ฌ๊ธฐ์ ๋ณด์ด๋ itemCountFunc() ๋ ๋ฐ์ ์ถ๊ฐ์ ์ผ๋ก ์ค๋ช ํ ์์ ์ด๊ณ ,
โจ ํ๋ผ๋ฏธํฐ
- string itemName : ๋จน์ ์์ดํ ์ด ๋ฌด์์ธ์ง
- Entity TriggerBodyEntity : ์์ดํ ์ ๋จน์ Entity๊ฐ ๋๊ตฐ์ง
ํ๋ผ๋ฏธํฐ ์์ด local ์ player ๋ฅผ _Userservice.Localplayer ์ ์ฌ์ฉํ๋ ค๊ณ ํ์ผ๋ ,
player ์ ๊ฐ์ธ์ inventoryComponent ์ ๊ทผ๊น์ง๋ ๊ฐ๋ฅํ์ง๋ง
์์ ์๋ ์์ดํ ๊ฐฏ์๋ฅผ ๋ฐํํ๋ ๊ฒ๋ ์ ๋๊ณ , CreateItem ํจ์๊ฐ ๋์๊ฐ์ง ์์๋ค.
๊ทธ๋์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํด์ inventoryComponent์ ์ ๊ทผํ๋ ๊ฒ์ด๋ค.
โจ ์ฝ๋ ์ค๋ช
๋ฐฉ๊ธ ์ถ๊ฐ๋ ์์ดํ ์ด ์๋ ์ธ๋ฒคํ ๋ฆฌ์ ์์๋ค๋ฉด CreateItem() ํจ์๋ก ์ถ๊ฐํด์ฃผ๊ณ
๋ฐฉ๊ธ ์ถ๊ฐ๋ ์์ดํ ์ด ์๋ ์ธ๋ฒคํ ๋ฆฌ์ ์์๋ค๋ฉด, ์์ดํ ๋ฐ์ดํฐ์์ ๋ฐฉ๊ธ ์ถ๊ฐ๋ ์์ดํ ์ด๋ฆ๊ณผ ๊ฐ์ ์์ดํ ์ count ๋ฅผ + 1 ๋งํผ ์ถ๊ฐํด์ฃผ๋ ๊ฒ์ด๋ค.
-> ๋๊ฐ์ ์์ดํ ์ด ๊ฐฏ์๋ง 1๊ฐ์ธ ์ฑ๋ก ๊ณ์ํด์ ์ธ๋ฒคํ ๋ฆฌ์ ๋ค์ด๊ฐ๋ ๊ฒ์ ๋ง์ผ๋ ค๋ ํ์๋ค.
โจ ์ฃผ์
_ItemService:CreateItem() ์ด ํจ์๋ ์๋ฒ์์๋ง ํธ์ถ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ค์ ์ server ๋ก ํด์ฃผ์ด์ผ ํ๋ค.
ItemCountFunc() ์ ๋ง ๊ทธ๋๋ก ์ ์ฒด ์์ดํ ๊ฐฏ์๋ฅผ ์ธ์ฃผ๋ ํจ์์ด๋ค.
์ ํจ์์ ๋ง์ฐฌ๊ฐ์ง๋ก
โจ ํ๋ผ๋ฏธํฐ
triggerbodyEntity
โจ ์ฝ๋ ์ค๋ช
property ๋ก wholeItemcount ๋ฅผ ์ถ๊ฐํด์ค ํ, ๊ณ์ํด์ ์นด์ดํธ๋ฅผ ์ ๋ฐ์ดํธ ํด์ค๋ค.
์ ์ ์ ์ธ๋ฒคํ ๋ฆฌ ์์ดํ ๋ฆฌ์คํธ์ ์ ๊ทผํ์ฌ
์ธ๋ฑ์ค๋ฅผ 1๋ถํฐ ์์ดํ ์ฌ๋กฏ ๊ฐฏ์๋๋ก ๋๋ฉด์
ํ ์์ดํ ์ฌ๋กฏ์ ๋ช ๊ฐ์ ์์ดํ ์ด ์๋์ง ์ฐธ์กฐ๋ฅผ ํด์์ ๋ชจ๋ ๋ํด์ฃผ๋ ์์คํ ์ด๋ค.
์ฒ์์๋ ํ ์์ดํ ์ฌ๋กฏ์๋ ์์ดํ ๊ฐฏ์๊ฐ ์จ์ ธ์๋๋ฐ ์ ์ฒด ์ฌ๋กฏ์ ๊ฐฏ์๋ง ๋ฐํํด์ ๋๊ฐํ๋๋ฐ,
์ด๋ ๊ฒ ๊ณ์ ๋ฐ๋ณต๋ฌธ์ ๋์ ์ ์ฒด ๋ชจ๋๋ฅผ ๋ํด์ฃผ๋ฉด ํด๊ฒฐ๋๋ค.
ํญ์ ์์ดํ ์ด ํ ๊ฐ ๋ถ์กฑํ๊ฒ ์ถ๋ ฅ๋ผ์ ๋ฆฌํด๊ฐ์ + 1 ํด์ค ๊ฒ์ด๋ค.
โจ ์ฃผ์
๋ค์ ์์ดํ ์ ์ ๋๋ ๊ผญ ์ด๋ฐ์ ์ ์ฒด์์ดํ ๊ฐฏ์๋ฅผ 0์ผ๋ก ์ ํ ํด์ฃผ์ด์ผ ํ๋ค.
(์๊ทธ๋ฌ๋ฉด ๊ฐฏ์๋ฅผ ๊ณ์ํด์ ๋ํด์ ์ ํ ๋..)
'MapleStory Worlds Super Hackathon > ์์ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Unity - inventory system (1) | 2022.10.18 |
---|