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 ๊ด€๋ จ์œผ๋กœ ์–ด๋–ค ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ–ˆ๋Š”๊ฐ€?
  • ์ƒ์  ์‹œ์Šคํ…œ ๋ฐ ํ”Œ๋ ˆ์ด์–ด ์Šคํ‚จ, ์ƒ์  ์Šคํ‚จ์˜ ๊ตฌ๋ถ„์„ ์–ด๋–ป๊ฒŒ ํ•˜์˜€๋Š”๊ฐ€?
  • ํ”„๋กœ์ ํŠธ์—์„œ ์•„์‰ฌ์—ˆ๋˜ ์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

๋‹จ์–ด์žฅ ๋ฐ Test ๊ด€๋ จ์œผ๋กœ ์–ด๋–ค ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ–ˆ๋Š”๊ฐ€?

1.๋‹จ์–ด์žฅ ๊ตฌํ˜„(VocaMaster Script ๋ฐ ๋‹จ์–ด๊ด€๋ จ Script)

ํ”„๋กœ์ ํŠธ ๋‚ด 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์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅํ•œ ๋‹จ์–ด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๋‹จ์–ด๋ฅผ ์ž…๋ ฅ, ๊ธฐ์กด ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ด๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

BGM Game


2.Test ๊ตฌํ˜„ ๋ฐ ์ ˆ์ฐจ์  ๋ฌธ์ œ ์„ ์ •(TestMaster Script)

ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋‹จ์–ด๊ฐ€ 20๊ฐœ ์ด์ƒ์ผ ๋•Œ, ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋‹จ์–ด์•”๊ธฐ๋ฅผ ๋„๋ชจํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ ํ…Œ์ŠคํŠธ์— ๋‚ผ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ์–ด์„œ ๋„์›€์ด ๋˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์„ ์ •ํ•˜๊ณ ์ž ํ–ˆ์œผ๋ฉฐ ์ด๋ฅผ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ์„ ํƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ TestMaster Script์— ์ ์šฉ, ์ด๋Š” init_test ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

BGM Game

์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ 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๊ฐ€ ๋†’์Œ)๋ฅผ ๋” ๋งŽ์ด ํ’€ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ• ์ˆ˜๋ก ๋” ์ทจ์•ฝํ•œ ๋‹จ์–ด์— ๋Œ€ํ•ด ์ง‘์ค‘ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉด์„œ ์‚ฌ์šฉ์ž์˜ ์˜์–ด ์‹ค๋ ฅ ์ฆ์ง„์— ๋„์›€์„ ์ฃผ๊ณ ์ž ํ–ˆ๋‹ค.

์ƒ์  ์‹œ์Šคํ…œ ๋ฐ ํ”Œ๋ ˆ์ด์–ด ์Šคํ‚จ, ์ƒ์  ์Šคํ‚จ์˜ ๊ตฌ๋ถ„์„ ์–ด๋–ป๊ฒŒ ํ•˜์˜€๋Š”๊ฐ€?

1.์ƒ์  ์‹œ์Šคํ…œ, ์ƒ์  ์Šคํ‚จ๊ณผ ํ”Œ๋ ˆ์ด์–ด ์Šคํ‚จ์˜ ๊ตฌ๋ถ„(ShopManager Script)

์Šคํ‚จ ์‹œ์Šคํ…œ์€ 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 ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. BGM Game

ํ”„๋กœ์ ํŠธ์—์„œ ์•„์‰ฌ์—ˆ๋˜ ์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

1.๋ฐ์ดํ„ฐ ์ €์žฅ ํšจ์œจ์„ฑ์— ๊ด€ํ•˜์—ฌ

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Easy Save Asset์„ ํ†ตํ•ด ์ €์žฅํ•˜๋ฉฐ, ์ด Asset์€ Dictionary, Listํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๋ฐ ScriptableObject ๊ฐ™์€ ์œ ๋‹ˆํ‹ฐ ์ „์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ํ•„์ž๋Š” ๋‹จ์ˆœํžˆ ์˜๋‹จ์–ด ๋ฐ์ดํ„ฐ๋ฅผ Dictionary์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋‚ด๋ถ€ ์˜๋‹จ์–ด ๋ฐ์ดํ„ฐ๋ฅผ 1๊ฐœ๋งŒ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•ด๋„ ์ „์ฒด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ €์žฅํ•˜๋Š” ์ž‘์—…์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ˆซ์ž๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ํ›จ์”ฌ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ HashTable์„ ์ด์šฉ, ์—ฌ๋Ÿฌ๊ฐœ์˜ Dictionary๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ์˜๋‹จ์–ด 1๊ฐœ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด๋„ ๊ทธ Dictionary์— ๋Œ€ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž‘์—…์„ ๊ฑฐ์น˜๋ฉด ๋˜๊ณ  ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ