Simple_Vocabulary_Application Wiki - UAVisonline/Portfolio GitHub Wiki
ํด๋น ํ๋ก์ ํธ๋ ๊ฐ๋จํ ๊ฒ์์ ์์ (ํ๋ ์ด์ด ์ปค์คํ ๋ฐ ์คํฌ ์๊ฐ ํจ๊ณผ, ์ฌ์ฉ์ ๋ง์ถคํ ์ ํ)๋ฅผ ์์ด ๋จ์ด์ฅ์ ๊ฒฐํฉํ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ์ ๋ชฉํ๋ก ์งํ๋์๋ค. ์ค์ ํ๋ก๊ทธ๋จ ๋ด์์ ์ฌ์ฉ์๋ ๋จ์ด ์ ๋ ฅ ๋ฐ ์ญ์ , ์์ ๊ธฐ๋ฅ์ ํตํ ์คํจ ๋ฐ ์คํฌ ๊ตฌ๋งค, ์๊ฐํจ๊ณผ๊ฐ ๊ฒฐํฉ๋ ๋จ์ด ํ ์คํธ๋ฅผ ์งํํ ์ ์๋ค.
ํด๋น ํ๋ก์ ํธ๋ 2022๋ 5์ HCI๋ฅผ ์๊ฐํ๋ฉด์ ClueBall Game์ ์ด์ด ์ฃผ์ ๋ฅผ ์ง์ ์ ์ ํด ์งํํ ํ๋ก์ ํธ์ด๋ฉฐ, '๊ฒ์์ ์์๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ์ฌ์ฉ์์๊ฒ ํฅ๋ฏธ, ํจ์จ๋ฉด์์ ๋์์ด ๋๋๊ฐ?'๋ผ๋ ์ฃผ์ ๋ฅผ ์ ์ ํด ๊ฐ๋ฐ, ์๋ฃํ ํ๋ก์ ํธ์ด๋ค.
ํด๋น ํ๋ก์ ํธ๋ ์งํํ ๋ ์ด์ ์ ๊ตฌ๋งคํ ์๋ Unity Asset๋ค์ ํ์ฉํ์ผ๋ฉฐ, ์ ์ ์คํฐ๋๋ฅผ ์ํด ๋จํก๋ฐฉ์ ๋ฐฐํฌ๋ฅผ ์งํํ์๋ค.
- All in 1 Sprite Shader (ํ๋ ์ด์ด ์คํจ ๊ตฌํ์์ ์ฌ์ฉ)
- Easy Save (๋ฐ์ดํฐ ์ ์ฅ์ ์ํด ์ฌ์ฉ)
- GUI Pro Kit - Fantasy, Sci-Fi (UI ์์์์ ํ์ฉ)
- 118 Sprite effect bundle, Epic Toon FX, Hero Knighe-Pixel Art (์คํฌ ์๊ฐ ํจ๊ณผ ๋ฐ ํ๋ ์ด์ด ๊ธฐ๋ณธ ์คํจ์ผ๋ก ํ์ฉ)
ํด๋น ์ํค์์๋ ํ๋ก์ ํธ์ ๋ํด ์๋ ํญ๋ชฉ๋ค์ ๊ดํด ์ค๋ช ํ๊ณ ์ ํ๋ค.
- ๋จ์ด์ฅ ๋ฐ Test ๊ด๋ จ์ผ๋ก ์ด๋ค ๋ถ๋ถ์ ๊ตฌํํ๋๊ฐ?
- ์์ ์์คํ ๋ฐ ํ๋ ์ด์ด ์คํจ, ์์ ์คํจ์ ๊ตฌ๋ถ์ ์ด๋ป๊ฒ ํ์๋๊ฐ?
- ํ๋ก์ ํธ์์ ์์ฌ์๋ ์ ์ ๋ฌด์์ธ๊ฐ?
ํ๋ก์ ํธ ๋ด VocaMaster Script๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋จ์ด๋ฅผ ๊ด๋ฆฌํ๋ค. ์ด ๋ ๋จ์ด๋ Listํํ์ ์์ด์คํ ๋ง๊ณผ ์ด๋ฅผ Key๋ก ์ผ์์ ์์ธํ ์ ๋ณด๋ฅผ ๋ฐํํ๋ Dictionary<string,ScriptableObject>๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ๋ํ ํด๋น Script๋ EasySave Asset์ ์ด์ฉํด ๊ฐ๋๋๋ ์ฆ์ ์ ๋จ์ด ์ ๋ณด(List ๋ฐ Dictionary<string,ScriptableObject>)๋ฅผ ๋ถ๋ฌ์จ๋ค.
๋ํ VocaMaster์๋ ๋จ์ด๋ฅผ Loadํ๋ ๊ธฐ๋ฅ ์ธ์๋ ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์๋ค.
- ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ๋ฅ (Save, body_Save function)
- ๋ด๋ถ์ฉ ๋ณ์๋ฅผ ๋ฐํํ๋ ๊ธฐ๋ฅ(get_index, get_count, get_detail_index)
- ๋จ์ด ์คํ ๋ง ๋ฐ ๋จ์ด ๋ป์ ๋ฐํํ๋ ํจ์ (get_list_content(int index), get_dictionary_body(string value))
- ๋จ์ด ์ถ๊ฐ, ๋จ์ด ์ญ์ ํจ์ (insert_voca(string hd, string bd), delete_voca(string hd))
- ๊ทธ ์ธ Test ๋ฐ ๊ธฐํ ์ฌํญ์ ์ํ ๊ธฐ๋ฅ ํจ์ (get_level_index_list(float min_value, float max_value),.....)
์ด๋ฅผ ํตํด ๋จ์ด์ฅ๊ณผ ๊ด๋ จ๋ Script๋ค์ VocaMaster์ ์ํธ์์ฉ ํ๋ ๊ฒ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ ์ฅํ ๋จ์ด๋ฅผ ๋ถ๋ฌ์ค๊ฑฐ๋ ์๋ก์ด ๋จ์ด๋ฅผ ์ ๋ ฅ, ๊ธฐ์กด ๋จ์ด๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ฉฐ ์ด๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ์ด ๋ํ๋ผ ์ ์๋ค.
ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋จ์ด๊ฐ 20๊ฐ ์ด์์ผ ๋, ํ ์คํธ๋ฅผ ํตํด ๋จ์ด์๊ธฐ๋ฅผ ๋๋ชจํ ์ ์๋ค. ์ด ๋ ํ ์คํธ์ ๋ผ ๋จ์ด๋ฅผ ์ฌ์ฉ์์๊ฒ ์์ด์ ๋์์ด ๋๋ ๋ฐฉํฅ์ผ๋ก ์ ์ ํ๊ณ ์ ํ์ผ๋ฉฐ ์ด๋ฅผ ์ํด ๊ฐ๋จํ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ TestMaster Script์ ์ ์ฉ, ์ด๋ init_test ํจ์ ํํ๋ก ์๋์ ๊ฐ์ด ๊ตฌํ๋์ด ์๋ค.
์ด๋ ๊ฒ ์์ฑ๋ Test ๋ฌธ์ ๋ฅผ ์ ๋ถ ํ๋ฉด, TestMaster Script์์ ์๋ reflect_test function์ด ์คํ๋๋ค.
326 public void reflect_test() // ํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ Data์ ๋ํ์ฌ ๋ฐ์ (๋จ์ด Level ๊ฐ ๋ณ๋ ๋ฐ Coin ์ฆ๊ฐ)
{
int coin_plus = 0;
329 for(int i =0;i< answer_result.Count;i++)
{
if(answer_result[i]==true)
{
VocaMaster.vocaMaster.set_dictionary_level(answer[i], -1.0f); // ๋ฌธ์ ๋ฅผ ๋ง์ถ ๊ฒฝ์ฐ -> level - 1
coin_plus += 50;
}
else
{
VocaMaster.vocaMaster.set_dictionary_level(answer[i], +1.0f); // ๋ฌธ์ ๋ฅผ ํ๋ฆฐ ๊ฒฝ์ฐ -> level + 1
}
340 }
......
347 VocaMaster.vocaMaster.Save();
ShopManager.shopmanager.plus_coin(coin_plus); // ์์ ๊ด๋ จ ํ๋ ์ด์ด ํํ๋ฅผ ๊ด๋ฆฌํ๋ Script
349 }
329~340 Line์ ํตํด ์ฌ์ฉ์๊ฐ ํผ ๋จ์ด ๊ฒฐ๊ณผ๋ฅผ ์ํํ์ฌ ๋ง์ถ ๋ฌธ์ ์ ๋ํด์๋ level ๋ฐ์ดํฐ๋ฅผ 1 ๊ฐ์, ํ๋ฆฐ ๋ฌธ์ ์ ๋ํด์๋ level ๋ฐ์ดํฐ๋ฅผ 1 ์ฆ๊ฐํ๋๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ณ๊ฒฝ์ฌํญ์ ์ค์ ๋ก ๋ฐ์ดํฐ ์ ์ ์ฅํ๊ธฐ ์ํด 347 Line, Save function์ ์คํํ๋ค.
๊ทธ ๋ค ์ฌ์ฉ์๋ ๋ค์ ํ ์คํธ๋ฅผ ์งํํ ๋ ์ ๋ฌธ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์์ ์ด ํ๋ฆฐ ๋จ์ด(level data๊ฐ ๋์)๋ฅผ ๋ ๋ง์ด ํ ์ ์๋ค. ์ด๋ฌํ ํ ์คํธ๋ฅผ ๋ฐ๋ณตํ ์๋ก ๋ ์ทจ์ฝํ ๋จ์ด์ ๋ํด ์ง์ค ๊ณต๋ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง๋ฉด์ ์ฌ์ฉ์์ ์์ด ์ค๋ ฅ ์ฆ์ง์ ๋์์ ์ฃผ๊ณ ์ ํ๋ค.
์คํจ ์์คํ ์ All in 1 Shader๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ธ ํ์ ์ ๋ถ ๋ฐ์์์ผ๋ฉฐ, ํ๋ก์ ํธ์์๋ ํด๋น ์์ ์ด ์ ๊ณตํ๋ material shader์ ๋ณ์๋ฅผ ๋ฐ๊พธ๋ ์์ผ๋ก ๊ตฌํํ์๋ค.
์์ ์์ ์ฌ์ฉ์๋ ํ๋ ์ด์ด ์คํจ๊ณผ Test๋ฅผ ์งํํ ๋ ์ฌ์ฉํ ์ฐ์ถ์ ์ ํ ๋ฐ ๊ตฌ๋งคํ ์ ์๋ค. ์ด ๋ ์ฐ์ถ ๋ถ๋ถ์ ๊ด๋ จ Template Script(TestDirector)์ ์์ฑ, ์ด๋ฅผ ์ฌ์ฉํ๋ GameObject๋ฅผ ์ฐ์ถ๋ณ๋ก ์ ์ํ์๊ณ , Test๋ฅผ ์งํํ ๋ ์ฌ์ฉ์๊ฐ ์ฅ์ฐฉํ ์ฐ์ถ ์ค๋ธ์ ํธ๋ฅผ ์์คํ ์ด ์์ฑํด์ Test์ฉ ๋ค์ํ ์ฐ์ถ์ ์ ์ฉํ๋ ๋ฐฉ์์ ๊ตฌํํ์๋ค.
์ด๋ฌํ ๋ถ๋ถ์ ์์ด์ ShopManager Script๊ฐ ํต์ฌ์ ์ธ ์ญํ ์ ๋ด๋นํ๊ณ ์์ผ๋ฉฐ, Test ์ฐ์ถ ์ธ ํ๋ ์ด์ด ์คํจ ๋ฐ ์์ ์คํจ ์์คํ ๋ ํด๋น Script๋ฅผ ์ด์ฉํด ์ฒ๋ฆฌํ๊ณ ์๋ค.
์ฐ์ ShopManager Script๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด Awake() ํจ์ ๋ด ๋ด์ฉ์ ์คํํด ํ์ฌ ์ฌ์ฉ๊ฐ๋ฅํ ์คํจ, ์ฐ์ถ์ ๋ํด ํ๋ ์ด์ด์ ๊ตฌ๋งค, ์ฅ์ฐฉ ์ฌ๋ถ๋ฅผ ๋ถ๋ฌ์จ๋ค. ๊ทธ ๋ค ์ฅ์ฐฉํ ์คํจ์ ์์คํ ์ ํ๋ ์ด์ด Material์ ์ ์ฉํ๋๋ฐ ์ด๋ฅผ Script ๋ด applied_shader(Line 297) ํจ์๋ก ์ฒ๋ฆฌํ๋ค. ๊ทธ ํ ์์ ์ ์ ์ฅํ๋ฉด ํ์ฌ ์์ material์ ํ๋ ์ด์ด material๋ก ๋ฐ๊พธ๋ ์์ ์ด ์งํ, ๊ทธ ํ ์์ ์์ ์คํจ์ ํด๋ฆญํ๋ฉด ์์ฐฉ์ด ๊ฐ๋ฅํ๋๋ก ํด์ผํ๋๋ฐ ์ด๋ฅผ Script ๋ด ์๋ ํจ์๋ค์ ์ด์ฉํด์ ์ฒ๋ฆฌํ๋ค.
198 public void purchased_color(int index) // index์ ํด๋นํ๋ Color Skin ๊ตฌ๋งค
{
......... (์๋ก์ด Color๋ฅผ ๊ตฌ๋งค ๋ฐ ์ฅ์ฐฉ, ๊ธฐ์กด Color๋ฅผ ํด์ ํ๋ฉฐ ์ด๋ฅผ Data ์ ์ ์ฅํ๋ ์์
์ ์งํ)
equipment_index = index;
shop_shader(equipment_index); // ์์ ๋ด Player Material ์ค์
applied_shader(); // Player Material ์ค์
}
226 public void equipment_color(int index) // index์ ํด๋นํ๋ Color Skin ์ฅ์ฐฉ (์์์ ๊ตฌ๋งค ๊ธฐ๋ฅ๋ง ์ ๊ฑฐ)
{
....... (์ด์ ์ ๊ตฌ๋งคํ๋ Color๋ฅผ ์ฅ์ฐฉ, ๊ธฐ์กด Color๋ฅผ ํด์ ํ๋ฉฐ ์ด๋ฅผ Data ์ ์ ์ฅํ๋ ์์
์ ์งํ)
equipment_index = index;
shop_shader(equipment_index);
applied_shader();
}
.......
286 public void enter_btn() // ์์ ๋์
์ (ํ์ฌ ์ฅ์ฐฉ์ค์ธ index Color๋ก Shop Shader ์ค์ )
{
shop_shader(equipment_index);
}
291 public void shop_shader(int index)
{
shop_material.SetColor("_ColorChangeNewCol", colors[index].cape_color);
shop_material.SetColor("_ColorChangeNewCol2", colors[index].body_color);
}
- enter_btn ํจ์๋ฅผ ์์ ์ ์ง์ ํ๋ Button ๊ธฐ๋ฅ์ ์ง์ด๋ฃ์ด ์์ material์ ํ๋ ์ด์ด material๋ก ๋ณํํ๋๋ก ํ๋ค.
- ๊ตฌ๋งค ๋ฐ ์ฅ์ฐฉ ๋ฒํผ์ ์ด์ฉํด ํ์ฌ ์ฅ์ฐฉํ Color์ index๋ฅผ ๋ณ๊ฒฝ, ๊ทธ ํ Shop_shader์ applied_shader ํจ์๋ฅผ ํตํด ํ๋ ์ด์ด, ์์ material ์์์ ๋ณ๊ฒฝํ๋ค.
- ShopColorPalate Script๋ฅผ ํตํด ์์ ๋ด ์คํจ UI๊ฐ ์กด์ฌํ๋ฉฐ ์ด๋ฅผ ํด๋ฆญํ๋ ๊ฒ์ผ๋ก ShopManager์ shop_shader๋ฅผ ์คํ, ์์ material ์์์ ๋ณ๊ฒฝํ ์ ์๋ค.
ํด๋น ํ๋ก์ ํธ๋ ๋ฐ์ดํฐ๋ฅผ Easy Save Asset์ ํตํด ์ ์ฅํ๋ฉฐ, ์ด Asset์ Dictionary, Listํํ์ ๋ฐ์ดํฐ ๋ฐ ScriptableObject ๊ฐ์ ์ ๋ํฐ ์ ์ฉ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ ์ฅํ ์ ์๋ค.
์ฌ๊ธฐ์์ ํ์๋ ๋จ์ํ ์๋จ์ด ๋ฐ์ดํฐ๋ฅผ Dictionary์ ์ ์ฅํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ, ๋ด๋ถ ์๋จ์ด ๋ฐ์ดํฐ๋ฅผ 1๊ฐ๋ง ์ญ์ ํ๊ฑฐ๋ ์ถ๊ฐํด๋ ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํด ์ ์ฅํ๋ ์์ ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ซ์๊ฐ ๋ง์์ง์๋ก ํจ์ฌ ๋ถํ๊ฐ ์ปค์ง๊ฒ ๋๋ค.
์ด๋ฌํ ๋ถ๋ถ์ HashTable์ ์ด์ฉ, ์ฌ๋ฌ๊ฐ์ Dictionary๋ฅผ ๋ง๋ ๋ค๋ฉด ์๋จ์ด 1๊ฐ๊ฐ ์ถ๊ฐ๋์ด๋ ๊ทธ Dictionary์ ๋ํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์ ์ ๊ฑฐ์น๋ฉด ๋๊ณ ๋ถํ๋ฅผ ์ค์ผ ์ ์์ ๊ฒ์ด๋ค.