1. ๋ฒํผ ๋ฐฐ์ด์ ๊ฐ ๋ฒํผ๋ค์ AddListener๋ฅผ ํ๊ณ ์ถ์๋ฐ
ย ย ๊ฐ ๋ฒํผ๋ง๋ค ์ธ๋ฑ์ค ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ์ ํด๋ฆญ๋ ๋์ธ ๋ช๋ฒ์งธ ๋์ธ์ง ํ์ธํ๊ณ ์ถ๋ค.
ย ย ๊ทผ๋ฐ ์๋ฌ๊ฐ ๋๋ค.
์๋ฌ์ํฉ ex )
public button[] btns;
Transform tTrans;
Transform mTrans;
void Awake(){
btns = new Button[10];
mtrans = transform; // ๊ฒ์๊ฒฐ๊ณผ.ย gameobject์ transform์ ๋ฉค๋ฒ๋ก ๋์ผ๋ฉด ๋ ๋น ๋ฅด๋ค๊ณ ํ๋ค.
tTrans = mTrans.Find("Buttons");
for( int i =0 ; i < 10; i++){
btns[i] = tTrans.Find("Btn"+i);
btn[i].onClick.RemoveAllListeners(); // ํน์ย ๋ค๋ฅธ ๋ฆฌ์ค๋๊ฐ ํ๋ํ๋ฉด ์ง์ฆ๋๋๊น ๊ทธ๋ฅ ๋ฃ๋๋ค.
btn[i].onClick.AddListener ( () => {
print( i ); //
}); // () => {} ๋ ๋๋ค์์ด๋ผ๊ณ ํ๋๋ผ. ์๋ฐ์ ์ต๋ช ํด๋์ค ๊ฐ์๊ฑฐ๋ผ๊ณ ์ดํดํ๋ค.
//()๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ํจ์์ธ๊ฑฐ๊ณ =>๋ ๋๋ค์์ด๋ ํ์ {}์์ ํจ์๋์๋ถ๋ค.
}
// ์ฌ๊ธฐ๊น์ง ๋์ํ์๋ i = 10์ด ๋๋ค.
//๊ทธ๋์ ํด๋น ๋ฒํผ Btn0~Btn9 ์ด๋๊ฑธ ๋๋ฌ๋ 10์ด ์ถ๋ ฅ๋๋ค.. ( ์ข๋ง. )
}
๋๋ค์์์ ์ฌ์ฉํ๋ i๋ณ์๋ for loop์ฉ์ผ๋ก ์์ฑ๋ ๋ฐ๋ณต์์ฉ int๋ณ์์ธ๋ฐ ์ด๊ฒ Awake๊ฐ ๋๋๋ ์๋ ์๊ฐ๊ณ
๊ธฐ์ตํ๊ณ ์๋๊ฑธ๋ก ๋ณด์ธ๋ค. ๊ทธ๋์ i++๋ฅผ 10๋ฒ ์ํํ๋ฉด 10์ด๋์
์์ง๋ ์์ ์ธ๋ฑ์ค๊ฐ 10์ธ ( 11๋ฒ์งธ)์ธ ๋ฒํผ์ด๋ผ๊ณ ์ถ๋ ฅ๋๋ ๊ฒ.
์ด๋ฐ ๋งํ์ฝ๋ฉ์ ๋ง๋ ๋ฐฉ๋ฒ์ ๋จ์ํฉ๋๋ค.
------
ํด๊ฒฐ๋ฐฉ๋ฒ ex)
public button[] btns;
Transform tTrans;
Transform mTrans;
void Awake(){
btns = new Button[10];
mtrans = transform; // ๊ฒ์๊ฒฐ๊ณผ.ย gameobject์ transform์ ๋ฉค๋ฒ๋ก ๋์ผ๋ฉด ๋ ๋น ๋ฅด๋ค๊ณ ํ๋ค.
tTrans = mTrans.Find("Buttons");
for( int i =0 ; i < 10; i++){
btns[i] = tTrans.Find("Btn"+i);
btn[i].onClick.RemoveAllListeners(); // ํน์ย ๋ค๋ฅธ ๋ฆฌ์ค๋๊ฐ ํ๋ํ๋ฉด ์ง์ฆ๋๋๊น ๊ทธ๋ฅ ๋ฃ๋๋ค.
int idx = i; // ๋๋ค์์์ ์ฌ์ฉํ๋ ๋ณ์๋ฅผ ์๋ก ๋ง๋ญ๋๋ค. idx๋ณ์๋ for loop ํ์๋งํผ ์ฆ 10๊ฐ ์๊ธฐ๊ณ ์์์ด์ง๋๋ค.
// ๊ฐ๊ฐ์ ๋ฒํผ์ ์ธ๋ฑ์ค๊ฐ์ ์ ์ฅํ๋ idx๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์๊ฒ ๋๋๊ฑฐ์ฃ .
btn[i].onClick.AddListener ( () => {
print(ย idxย ); //
}); // () => {} ๋ ๋๋ค์์ด๋ผ๊ณ ํ๋๋ผ. ์๋ฐ์ ์ต๋ช ํด๋์ค ๊ฐ์๊ฑฐ๋ผ๊ณ ์ดํดํ๋ค.
//()๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ํจ์์ธ๊ฑฐ๊ณ =>๋ ๋๋ค์์ด๋ ํ์ {}์์ ํจ์๋์๋ถ๋ค.
}
// ์ฌ๊ธฐ๊น์ง ๋์ํ์๋ i = 10์ด ๋๋ค.
//๊ทธ๋์ ํด๋น ๋ฒํผ Btn0~Btn9 ์ด๋๊ฑธ ๋๋ฌ๋ 10์ด ์ถ๋ ฅ๋๋ค.. ( ์ข๋ง. )
}
์ฌํผ ์ด๋ ๊ฒ ํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค.
๋จ์ํ๊ฑด๋ฐ ๊ตฌ๊ธ๋ง ํด๋ ํ ์๋์ค๊ธธ๋ ์ฌ๋ฆผ
2. ๊ฒ์ ์ผ์ง๋ ๊บผ์ ธ์ ๋ณด์ฌ์ผ ํ๋ UI๊ฐ ์๋ค.
๊ทผ๋ฐ SetActive(false)ํน์ ์ ๋ํฐ ์๋ํฐ์์ ์ฒดํฌ๋ฅผ ํ์๋๋
Find("Button") ํจ์๋ก ์ฐพ๋ ๋ถ๋ถ์ด ๋๋ก ๋์จ๋ค.
class DialoguePanel : Monobehavior {
public Button btnSend;
// Awakeํจ์๋ ๊ฒ์ ์ผ์ง๋ active์ํ์ด๋ฉด ๊ฒ์ ์ผ์ง์๋ง์ ๋์ํฉ๋๋ค.
// ๊ฒ์ ์ผ์ง๋ inactive์ํ์์ผ๋ฉด Awake๋ ๋์ํ์ง ์์ต๋๋ค.
// ์ด๋ฐ inactive๋ ์ค๋ธ์ ํธ์ ๊ฒฝ์ฐ ์ฒ์ setActive( true ) ๋ ๋, ์ฆ ์ฒ์ ํ์ฑํ๋ ๋ Awakeํจ์๊ฐ ๋์ํฉ๋๋ค.
// ์ฒ์์ inactive์ธ ์ค๋ธ์ ํธ๋ฅผ ๋ค๋ฅธ ํด๋์ค์์ public์ผ๋ก ์ ๊ทผํด์ ์ด๋ค ํจ์๋ฅผ ๋์ํ๋ ค ํ ๋
// Find() ๊ฐ์ ํจ์๋ก ๋ด๋ถ์ Text, Image ๋ฑ ์ปดํฌ๋ํธ๊ฐ ๋ฉค๋ฒ๋ณ์๋ก ํ ๋น์ด ์๋์ nullํฌ์ธํฐ ์๋ฌ๊ฐ ๋ ์ ์์ต๋๋ค. ใ ๋ง..
// ์์ธํ๊ฑด dkfotj
void Awake(){ย
btnSend = transform("Button").getComponent<Button>();
}
// ์ธ๋ถ์ ๊ฒ์ ๋งค๋์ ๊ฐ์ ํด๋์ค๊ฐ ํด๋น UI๋ฅผ ๋์ฐ๊ธฐ ์ ์ ํน์ ๋ฒํผ์ย
// ํด๋ฆญ ๊ฐ๋ฅํ๊ฒ ํน์ ํด๋ฆญ ๋ถ๊ฐ๋ฅํ๊ฒ ์ค์ ํ๋ ๊ฒ
// ์๋ฅผ๋ค๋ฉด ๊ตฌ๋งคํจ๋์ ๋์ฐ๋๋ฐ ๋์ด ์์ผ๋ฉด ๋นํ์ฑํ๋ก ํ์ํ๋ฉด ์ข์ฃ ?
// ๊ทธ๋ฐ๋ฐ ํจ๋์ ํ์ฑํ ํ๊ณ ๋์ ๋ฒํผ์ ๋นํ์ฑํํ๋ฉด
// ํน์๋ ์ฌ์ฉ์ํํ ๋ฒํผ์ด ํ์ฑ->๋นํ์ฑ์ผ๋ก ์ ํ๋๋๊ฒ ๋ณด์ผ ์๋ ์์ผ๋๊น.
// ๋ฏธ๋ฆฌ ์์์ธ ๋ฒํผ์ ๋นํ์ฑํ ํ๊ณ ํจ๋์ ๋์ค์ ๋์ฐ๊ณ ์ถ์ ๊ฒฝ์ฐ์
public setBtnEnable( bool btnEnableย ){
btnSend.interactable =ย btnEnable;
}
} // ํด๋์ค ๋๋จ
// ์ด๊ฒฝ์ฐ ํด๋น ํจ๋์ด ๊ฒ์์์์ inactive์ํ์๋ค๋ฉด ๋นจ๊ฐ๋ถ๋ถ btnSend๊ฐ null์ด๋ผ์ ์๋ฌ๊ฐ ๋ฉ๋๋ค.
// ๊ทผ๋ฐ inactive๋ก ์๋์ผ๋ฉด ์์ ์์ ๊ณ์ ํด๋น ํจ๋์ด ํ๋ฉด์ ๋์์ ธ ์์ด์ ์ง์ฆ๋๊ฑฐ๋ ์ ๊ทธ๋ด๋
[ExcuteInEditMode]
// <- ์ด๊ฑธ ์ถ๊ฐํ๋ฉด MonoBehavior์ ์ฝ๋ฐฑ ํจ์๋ผ๋ Awake, Start, Update๋ฑ์ด ์ ๋ํฐ ์๋ํฐ๋ก ์์ ํ ๋๋ ๋์ํ๋ค๊ณ ํฉ๋๋ค.
// ์ด ํด๋์ค์ ๊ฒฝ์ฐ Start, Update๋ฑ์ด ์์ผ๋ Awake๋ง ๋์ํ์ฃ
class DialoguePanel : Monobehavior {
void Awake(){ย
btnSend = transform("Button").getComponent<Button>();
gameObject.SetActive(false); // ์๋ํฐ์์์ Active๋ก ๋์ผ๋ฉด
//Awake๋์ ๋๋ํ ( ๋ชจ๋ ๋ฉค๋ฒ๊ฐ์๊ฑฐ ํ ๋น์๋ฃ ํ )ย
//ํด๋น ํจ๋์ ๋นํ์ฑํ ํ๊ธฐ ๋๋ฌธ์ BtnSend๊ฐ์๊ฒ ๋ค ์ ์ฉ์ด ๋ ์ํ์
}
public setBtnEnable( bool btnEnableย ){
btnSend.interactable =ย btnEnable;
// ๊ทธ๋์ ์ฌ๊ธฐย setBtnEnable๋ฅผ ์ธ๋ถ์์ ํธ์ถํด๋ btnSend๊ฐ ๋์ด๋ผ๋ ์๋ฌ๋ ์๋ ๊ฒ๋๋ค
}
}
// ๋น์ฐํ๊ฑด๋ฐ ์ ๊ฐ ์ด๋ณด๋ผ ๋งํ๋๊ฒ ๋ง์์, ๊ฐ์ ์ด๋ณด๋ค๊ณผ ๋๋๋ ค๊ณ ์ฌ๋ ค๋ด ๋๋ค.
ํ๋ฏธ..๊ธธ์ด๋ผ
ํํด๊ฑฐ๋๊ฑด ์๋๊ตฌ ์๋ํฐ์์ ๊บผ์ง Object๋ฅผ ์คํฌ๋ฆฝํธ์์ ์ ๊ทผํ๋ ค๋ฉด ๋ฐ๋ก์ ๊ทผํ์ง๋ง๊ณ ํ์ด๋ผํค์์ ๋ฃจํธ๋ถํฐ transform.FindChildํ๊ณ ๋ด๋ ค๊ฐ๋ฉด ์ ๋๋ก ์ก์์ผ ๊ธ์ ์จ์๋๊ฑฐ๋ฉด ใ ใ
ํฌ๋ฌธ ์์ idx ๋ฃ์๊ฑฐ... ์ ๋ ๊ฒ ์ํด๋ ๋ฒํผ ์ด๋ฏธ ์์ฑํ๋๋ฉด ๋ฆฌ์ค๋ ๋ฐ๋์ ๊ทธ ์ซ์ ์ ๋๋ก ์ถ๋ ฅํ ํ ๋ฐ
๋น์ฅ ์ง๊ธ ํ์ ๋ ํฌ๋ฌธ i๋ฅผ ๋ฒํผ ์ฝ๋ฐฑ ์ ๋ ์ธ๋ฑ์ค๋ก ๋ฃ์ด๋ ๋ฌธ์ ์์ด ์ ๋์๊ฐ์
๊ทธ๊ฒ ๋ฌธ์ ๋ผ๋ฉด ์ ๋ํฐ ์ ๋ ๋ชป์ฐ๊ฒ ๋ค
๋ ์ ๋ ๊ฒ ๋๋ค๋ฅผ ์ฐ์ง ๋ง๊ณ ์ฝ๋ฐฑํจ์๋ฅผ ์ผ์ ์ง์ ๋ชปํด์ฃผ๋
๊ทธ๋ฆฌ๊ณ idx๊ฐ๋ ํฌ๋ฌธ ๋ด๋ถ์์ ์์ฑํ๊ฑฐ๋ผ {} ๋์ด๊ฐ๋ฉด ์ฌ๋ผ์ง
๋๋ค๋ก ์ฝ๋ฐฑํ ๋ ํน์ ์ซ์๊ฐ์ ๋ฐ๋ก int idx๋ก ์ ์ธ ํด์ฃผ๋๊ฑด ์๋ ์ ๋ ๊ฒ ํ๋๊ฒ ๋ง๋๊ฑฐ์..
๊ทธ๋ฅ int i๋ก ํ๊ฒ ๋๋ฉด ๊ฒฐ๊ตญ์ ์ ์ธ์ด 1๋ฒ๋ง ์ด๋ฃจ์ด์ง๊ฑฐ๊ธฐ ๋๋ฌธ์ ๋ค ๋ง์ง๋ง์ ๋์ ํ๊ฐ์ผ๋ก ์ถ๋ ฅ๋จ...
CC_Callback_1 ์ฝ์ฝ์ค์ 1์น ์ฑ๊ฒจ๊ฐ๋๋ค
๊ทธ๋ฆฌ๊ณ ๋๋ค๋ฅผ delegate๋ ์กฐํฉํด์ ์ฐ๋ฉด ์ข์๊ฒ..์ค์ฝํ๋ฃฐ์ ์ ์ฉ๋ฐ์..์ด๊ฑด์์ ์ข ์ฌ๊ธฐ๊ฐ์ง๋ง..๊ทธ ์์ ์ ๋ณ์๊ฐ ๋๋ค์ {}์ด ์์ญ์ด ์๋๋๋ผ๋ ์ค์ฝํ๋ฃฐ์ ํด๋น๋๋ ๋ณ์๋ฉด ์ ๊ทผ์ด ๊ฐ๋ฅํจ...๊ทธ๋์ ์ฐธ์กฐํ์์ด ์๋ ๊ฐํ์์ธ int๋ ์ ๊ทผํ ์ ์๋๊ฑฐ๊ณ ..๊ฐ๊ฐ ์ ์ธ๋ int idx๊ธฐ ๋๋ฌธ์ ๊ทธ ๊ฐ์ผ๋ก ์ ํํ ๋ฐ์์ ์๊ฒ๋๋๊ฑฐ์..
์ ๋ํฐ๋ c#์ด์ง...
์ Find๋ง๊ณ FindChildํ๋ฉด inactive๋ ์ค๋ธ์ ํธ๋ ์ ๊ทผ ๊ฐ๋ฅํ๋์ ๊ฐ๊ตฌ๋ฅด