์๋
์ด๋ฒ ๊ธ์ ์ ์ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถ์ ๊ณต๋ชจ์ ํ๋์ ์ ๋ฆฌํ๊ณ ์ ํ๋ ๊ธ์ด๋ฏ๋ก ์ ๋ต์ด ์๋๋ผ๋ ์ . "์ด๋ ๊ฒ ํ๊ตฌ๋" ์ ๋๋ก ์๊ฐํ์ฌ ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง ๋ด์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ์ฝ๋ฉ์๋ ์ ๋ต์ด ์์ผ๋๊น์.
GIGDC
๊ธ๋ก๋ฒ ์ธ๋๊ฒ์์ ์ ๊ฒฝ์ง๋ํ
www.gigdc.or.kr
์ฐธ๊ฐํ ๊ณต๋ชจ์ ์ ๋ณด๋ ์ ์ฌ์ดํธ ๋งํฌ๋ฅผ ํตํด ์ ์ ์์ต๋๋ค. ์ฒซ ํ์ ๊ณผ ๊ณต๋ชจ์ ํ๋์ด๊ธฐ์ ํ์ฌ๋ ์ ๋ง ์ ์ ์ด ์๋ค์..
์์ฑ์ ํ ์ ์์๊น? ํ๋ ๊ฑฑ์ ์ด ๊ตฌํํ๋ ๋งค ์๊ฐ ์๊ฐ์ด ๋์ง๋ง, ์๊ฐ์ด ํ๋ฅด๋ฉด ์ด๊ฒ๋ ๊ฒฝํ์ด์ ์ถ์ต์ด๋ฏ๋ก ์ผ๋จ ์ต์ ์ ๋คํด๋ณด๋ ค๊ณ ํฉ๋๋ค..

์ถ๋ฆฌ ์์คํ ๊ตฌ์ถ
๊ตฌํํ๊ณ ์ ํ๋ ์ถ๋ฆฌ ์์คํ ํ๋ฆ์ ์ด๋ ์ต๋๋ค. ์ผ๋จ ์์ง ๋์์ด๋๋ถ๋ค ์์ ์ด ๋๋์ง ์์์ผ๋ฏ๋ก ํผ์์ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ์์คํ ์ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค.
์ฌ์ง์ผ๋ก ๋ณด๊ธฐ ์ข๊ฒ ์์ฝ์ ํด๋ณด์์ต๋๋ค. ๋ฐ์ํ๊ณ ์ถ์ ๊ณต๊ฐ ํด๋ฆญ ์ ์ฆ๊ฑฐ ๋ชฉ๋ก์ด ๋จ๊ฒ ๋๊ณ , ๋ชฉ๋ก ๋ฆฌ์คํธ ์ค ํญ๋ชฉ ์ ํ ์ ๊ทธ ํญ๋ชฉ์ด ๊ณต๊ฐ์ ๋ฐ์๋ ์ ์๋๋ก ํ๋ ๊ฒ์ด์ฃ .
์ด์ ์ ์ผ ๋น์ทํ ์ถ๋ฆฌ ์์คํ ์ผ๋ก "๋น์ ์ ์๋ ์ ์ํ์ฌ" ๊ฒ์์ ์ฐธ๊ณ ํ์ค ์ ์์ต๋๋ค.
1. Canvas๋ฅผ ์ถ๊ฐํฉ๋๋ค.
2. ๋ฐ์ํ ๊ณต๊ฐ Panel ๊ณผ ๋ฆฌ์คํธ ํญ๋ชฉ์ ๋ด์ Panel์ ์ฆ, 2๊ฐ์ Panel์ ๋ง๋ค์ด ์ค๋๋ค.
๋ง๋ค์ด์ง๋ฉด ์ด๋ฐ ๊ตฌ์กฐ๊ฐ ๋ฉ๋๋ค. ์ Guess Panel์ Grid Layout Group์ ๋ฃ์ด์ฃผ์ด ๋ณด๊ธฐ ์ข๊ฒ ๋ง๋ค์ด ์ฃผ์์ต๋๋ค.
์ด์ ์ํ๋ ์๋์ ํ๋๋ก ์ฝ๋๋ฅผ ์ง์ผ ํฉ๋๋ค.
๋ ๊ฐ์ ํด๋์ค๊ฐ ํ์ํ๊ฒ ๋ฉ๋๋ค. ๋ฆฌ์คํธ ๋ด ํญ๋ชฉ๊ณผ ๋ฐ์ ๊ณต๊ฐ์ ์ด๋ป๊ฒ ๋ณํ๋ฅผ ์ค ๊ฒ์ธ๊ฐ์ ๋ํ ํด๋์ค ํ๋์
๋ฆฌ์คํธ ๋ด ํญ๋ชฉ์ ํด๋ฆญ ์ด๋ฒคํธ๋ก ์ฒ๋ฆฌํ ์ ์๋ ํด๋์ค ํ๋๊ฐ ํ์ํ๊ฒ ๋ค์.
Selects ํด๋์ค:
- ์ฆ๊ฑฐ ๋ฆฌ์คํธ ๋ด์์ ํญ๋ชฉ์ ์ ํํ์ฌ ์์์ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ
- ๋ฒํผ์ ์์๊ณผ ํ ์คํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ
SlotClickHandler ํด๋์ค:
- ์ฌ๋กฏ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ
- ํด๋ฆญํ ์ฌ๋กฏ์ ๋ํ ์์๊ณผ ํ ์คํธ ๋ณ๊ฒฝ
- ๋ชจ๋ ์ฌ๋กฏ์ด ๋นจ๊ฐ์์ธ์ง ํ์ธํ๊ณ ์ฒ๋ฆฌ ๋ก์ง์ ์ํ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Selects : MonoBehaviour
{
// ์ฆ๊ฑฐ ๋ฆฌ์คํธ ๋ด์์ ํญ๋ชฉ์ ์ ํ ํ ์ ์๋ค.
public GameObject[] slots;
// ์ฆ๊ฑฐ ๋ฆฌ์คํธ ๋ด ํญ๋ชฉ์ ์ ํํ ์ ์๋ค.
public void ChangeSlotColor(int slotIndex, Color newColor)
{
GameObject slot = slots[slotIndex];
Image slotImage = slot.GetComponent<Image>();
slotImage.color = newColor;
}
// ๋ฆฌ์คํธ ๋ด ์์ดํ
(์ฆ๊ฑฐ) ์ ํ ์ ์กํ์์น ๊ณต๊ฐ์ ๊ทธ ์ฆ๊ฑฐ๊ฐ ๋ฐ์๋๋ค.
public void ChangeButtonColorAndText(Color newColor, string newText)
{
Button button = GetComponentInChildren<Button>();
Text buttonText = button.GetComponentInChildren<Text>();
button.image.color = newColor;
buttonText.text = newText;
}
}
|
cs |
์์์ Prefab์ผ๋ก ๋ง๋ Slot ๋ค์ slots ๋ฐฐ์ด์์ ๊ด๋ฆฌํฉ๋๋ค.
ChangeSlotColor()๋ ๋ฆฌ์คํธ ๋ด ์ ํํ ํญ๋ชฉ์ ๋ณ๊ฒฝํ๊ฒ ๋ค. ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค. ๋ฉ์๋๋ ์ ํํ ํญ๋ชฉ์ ๋ํ๋ด๋ SlotIndex์ ๋ณ๊ฒฝํ ์์์ธ newColor ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์์ ๋ณ๊ฒฝํด ์ฃผ๊ฒ ๋ฉ๋๋ค.
ChangeButtonColorAndText()๋ ์ ํํ ํญ๋ชฉ์ ๋ฐํ์ผ๋ก ๋ฐ์ํ๊ณ ์ถ์ ๊ณต๊ฐ(Selected Panel)์ ์ ๋ณด๋ฅผ ๋ฐ์ํ๊ฒ ๋ค. ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
๋ ๊ฐ์ Panel์ ๊ฐ๊ฐ Selects ์ปดํฌ๋ํธ๋ฅผ ๋ฃ์ด์ค ๋ชจ์ต์ ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class SlotClickHandler : MonoBehaviour, IPointerClickHandler
{
// Panel ๋ฐ Button์ ๋ํ ์ฐธ์กฐ
private Selects panelSelection;
public Selects otherPanelSelection;
public int objectNumber;
// objectNumber์ ๋ฐ๋ผ ๋ค๋ฅธ ์์๊ณผ ํ
์คํธ๋ฅผ ์ค์ ํ ๋ฐฐ์ด
public string texts;
private void Start()
{
panelSelection = GetComponentInParent<Selects>();
}
public void OnPointerClick(PointerEventData eventData)
{
int N = panelSelection.slots.Length;
bool allSlotsRed = true;
// ๋ชจ๋ Slot์ด Red์ธ์ง ํ์ธ
for (int i = 0; i < N; i++)
{
if (!panelSelection.slots[i].GetComponent<Image>().color.Equals(Color.red))
{
allSlotsRed = false;
break;
}
}
// ๋ชจ๋ Slot์ด Red์ผ ๋์ ์์ง Red๊ฐ ์๋ Slot์ด ์๋ ๊ฒฝ์ฐ์ ๋ํ ๋ถ๊ธฐ
if (allSlotsRed)
{
// ๋ชจ๋ Slot์ด Red์ธ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ ๋ก์ง
print("์ ํฌ ์ฌ์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค..");
}
else
{
// ์์ง Red๊ฐ ์๋ Slot์ด ์๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ ๋ก์ง
print("์์ง ๋ชจ๋ ์ฆ๊ฑฐ๋ฅผ ํ๋ณดํ์ง ๋ชปํ์ต๋๋ค..");
}
// ํ์ฌ ํด๋ฆญํ Slot์ ๋ํ ์์๊ณผ ํ
์คํธ -> ํญ๋ชฉ ๋ฐ์
switch (objectNumber)
{
case 0:
panelSelection.ChangeSlotColor(objectNumber, Color.red);
otherPanelSelection.ChangeButtonColorAndText(Color.red, texts);
break;
case 1:
panelSelection.ChangeSlotColor(objectNumber, Color.red);
otherPanelSelection.ChangeButtonColorAndText(Color.red, texts);
break;
case 2:
panelSelection.ChangeSlotColor(objectNumber, Color.red);
otherPanelSelection.ChangeButtonColorAndText(Color.red, texts);
break;
case 3:
panelSelection.ChangeSlotColor(objectNumber, Color.red);
otherPanelSelection.ChangeButtonColorAndText(Color.red, texts);
break;
}
}
}
|
cs |
panelSelection์ GuessPanel ์ฐธ์กฐ ๋ณ์ / otherPanelSelection์ SelectedPanel ์ฐธ์กฐ ๋ณ์์ ๋๋ค.
๋ ๊ฐ์ ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ํจ๋ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ๋๋์ ์ค๋๋ค.
objectNumer ๋ณ์๋ Prefab์ผ๋ก ์ ์ธํ Slot๋ค์ ์ค๋ธ์ ํธ ๋ฒํธ๋ฅผ ์ ์ฅํ๋ ๋ณ์์ ๋๋ค.
Switch()๋ฌธ์์ ์ด๋ค ์ค๋ธ์ ํธ๋ฅผ ์ ํํ๋์ง ์๋ณํ๋ ๋ฐ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
SlotClickHander ํด๋์ค๋ IPointerClickHandler์ ์์๋ฐ์ ๋ง์ฐ์ค ํด๋ฆญ / ํฐ์น ๋ฑ์ ๊ฐ์งํ๊ธฐ ์ํ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
https://docs.unity3d.com/kr/560/Manual/SupportedEvents.html
์ง์๋๋ ์ด๋ฒคํธ - Unity ๋งค๋ด์ผ
์ด๋ฒคํธ ์์คํ ์ ๋ค์์ ์ด๋ฒคํธ๋ฅผ ์ง์ํ๋ฉฐ ์ฌ์ฉ์๊ฐ ์์ฑํ ์ ๋ ฅ ๋ชจ๋์ ํตํด ํ์ธต ๋ ํจ์จ์ ์ผ๋ก ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
docs.unity3d.com
OtherPanelSelection ๋ณ์๋ Public์ผ๋ก ์ ์ธํด ์ฃผ์๊ธฐ์ ์ง์ Panel์ ์ฐ๊ฒฐํด ์ฃผ์ด์ผ ํฉ๋๋ค.
Object Number๋ฅผ ์ง์ ํด ์ฌ๋กฏ๋ค์ ๋ฒํธ๋ฅผ ์ ์ฅํ๊ณ , Texts์๋ ๋ฐ์ํ ๊ณต๊ฐ์ ์ด๋ค ํ ์คํธ๋ฅผ ์ง์ ํ ๊ฒ์ธ์ง์ ๋ํ ์ ๋ณด๋ฅผ ๋ฃ์ด์ค๋๋ค.
์ ๋ ์ถ๊ฐ๋ก ๋ฒํผ ํ๋๋ฅผ ์ถ๊ฐํ์ฌ ์๋ ์๊น๊ณผ Text๋ก ๋์ด๊ฐ๋ ์ฝ๋๋ฅผ ๋ฐ๋ก ๊ตฌํํด ์ฃผ์์ต๋๋ค.
๋ค์ด๊ฐ ๊ณต๊ฐ์ ํด๋ฆญํ๋ฉด ์์ดํ ๋ฆฌ์คํธ๊ฐ ๋จ๊ณ , ๋ฆฌ์คํธ ๋ด ํญ๋ชฉ์ด ์ ๋ฐ์๋๊ณ ์๋ ๋ชจ์ต์ ๋๋ค.
ํ์ง๋ง, ๋ชจ๋ ํญ๋ชฉ ์ ํ ์ ๋ค์ ๋ก์ง์ด ์กฐ๊ธ ๋ถ์คํด๋ณด์ด๋ค์... ์ ๊ฐ ์ํ๋ ๊ฑด ๋ชจ๋ ํญ๋ชฉ์ด ์ ํ๋์๋ง์ "์ ํฌ ์ฌ์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค." ๋ก๊ทธ๋ฅผ ํ์ธํ๋ ๊ฒ์ด์์ง๋ง, ์์์์๋ ๋ชจ๋ ํญ๋ชฉ์ด ์ ํ๋๊ณ ๋์ ๋ค์ ํ๋ฒ ํด๋ฆญํด์ผ๋ง ๋ก๊ทธ๊ฐ ๋ค๋ฅด๊ฒ ์ฐํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ์ข ๋ ๊ณ ๋ฏผ์ ํด๋ด์ผ๊ฒ ๋ค์.. ใ