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๊ฐ€ ๋„์ด๋ผ๋Š” ์—๋Ÿฌ๋Š” ์•ˆ๋‚ ๊ฒ๋‹ˆ๋‹ค

}

}

// ๋‹น์—ฐํ•œ๊ฑด๋ฐ ์ œ๊ฐ€ ์ดˆ๋ณด๋ผ ๋ง‰ํžˆ๋Š”๊ฒŒ ๋งŽ์•„์„œ, ๊ฐ™์€ ์ดˆ๋ณด๋“ค๊ณผ ๋‚˜๋ˆ„๋ ค๊ณ  ์˜ฌ๋ ค๋ด…๋‹ˆ๋‹ค.