์์๋ถํฐ ๋งํ
์ผ๋จ ๊ธฐ๊ณ์ ์ผ๋ก ๊ธ ์ฌ๋ผ์จ๊ฑฐ ๊ณ ๋๋กย ๋ณต๋ถํด์
string Input = "๋ด์ฉ";
var value = this.GetType().GetField(Input).GetValue(this);
intext = some_script.GetInastance ().(string)value[0];
์ด๋ฐ ์์ผ๋ก ์งฐ๋๋ ์๋จ
์ฌ์ค ๋น์ฐํ ์๋ ์ค ์์ํ์. ์๋๋ฉด ๋ ์ ๋ด์ฉ์ ํ๋๋ ์ดํดํ์ง ๋ชปํ์ผ๋๊น
์ผ๋จ GetType, GetField, GetValue๊ฐ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ์.
๊ฒ์ํด๋ณด๋ "ํด๋น ํ์ ์ ํ์ /ํ๋/๊ฐ์ ๋ถ๋ฌ์จ๋ค" ๋ผ๊ณ ํ๋๋ฐ ์๋ฏธ๊ฐ ๋ง๊ธด ๋ง์ง๋ง ์ค๋ช ์ด ๋๋ฌด ๋ถ์กฑํ ๊ฑฐ ์๋๋ ํ๊ธใฑใ
๊ธฐ์ด์ง์์์ด ๋งจ๋ ์์ ์์ํ๋๊น ์ ๋ฌธ์ฉ์ด๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ค.
์ผ๋จ (string)value ๋ผ๊ณ ๋ฃ์๊ฑด ์ฌ๋ผ์จ ๊ธ ๋ณธ๋ฌธ์ (float)value ์๊ธฐ ๋๋ฌธ์ ์๋ ์์ ๋ถ์ฌ์ผํ๋? ํด์ ๋ถ์ฌ๋ดค์. ๊ทธ๋ฌ๋๋ ์ ์ ์๋ '(' ๋ฌธ์๊ฐ ์๋ค๋ฉฐ ์ค๋ฅ.
๊ทธ๋์ string์ ๋นผ๊ณ value๋ง ๋ฃ์๋๋ value์ ๋ด์ฉ์ด ์๋๋ผ, value๋ผ๋ ๋ฌธ์ ๊ทธ ์์ฒด๋ก ๋ฐ์๋ค์ฌ์ '๊ทธ๋ฐ ๊ฐ์ด some_script'์ ์๋ค๋ฉฐ ์ค๋ฅ.
๋๊ธ์ [test],["test"] ์ด๋ฐ ์์ ๊ธ์ด ๋ณด์ฌ์ ๋ ๋ค ๋ฐ๋ผํ๋๋ ๋ ์ ์ ์๋ย '[' ๋ฌธ์๊ฐ ์๋ค๋ฉฐ ์ค๋ฅ.
๊ทธ๋์ ์ถ๋ก ํด๋ณธ๊ฑด "์ ๋ ๊ฒ ๊ธฐ๋ฅ์ฝ๋ ๋ด์ ๋ค์ด๊ฐ ๋๋ ๋ญ๊ฐ ๋ค๋ฅธ ์๋ฅผ ์จ์ผ ํ๋?" ์ธ๋ฐ..
์ด๊ฒ๋๋ฌธ์ ๋ฆฌํ๋ ์ ์ ๋ํด์ ๊ฒ์ํด๋ดค๋๋ฐ ๋๋ถ๋ถ ์๋ก ์ ์ธ ๋ฌธ์ ๊ณ ๋ด๊ฐ ํ์ฉํ๋ ค๋ ์์ ํด๊ฒฐ์ ๋ณด์ด์ง ์์...
์ ์ด๊ฒ๋ ๊ณ์ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
๋ณธ๋ฌธ๊ณผ๋ ๋ณ๊ฐ ์ด์ผ๊ธฐ์ธ๋ฐ, ๋ณดํต ์ฐพ์๋ณด๋ฉด GetInstance ๋ผ๊ณ ๋์ค๋๋ฐ ์ ๋ด ์คํฌ๋ฆฝํธ์ GetInastance๋ผ๊ณ a๊ฐ ์ค๊ฐ์ ๋ถ์ด์์๊น. ๊ทผ๋ฐ ๊ทธ๋ ๊ฒ ํด๋ ์ ๋์๊ฐ๋๊น ๋ ์ ๊ธฐํ๋ค...
๊ฐ์ง๊ณ ์ค๋ ค๋ ๋ณ์๊ฐ ์ ์ฝ๋ ์๋ ์คํฌ๋ฆฝํธ์ด ์์ด? this๋ผ ํด๋น ์คํฌ๋ฆฝํธ์ ์์ด์ผํ๊ณ public์ด์ผ? ์ ๊ทผํ์ผํด์ public์ด์ฌ์ผํด
GetValue๋ก ๊ฐ์ ธ์ค๋ฉด objectํ์ด๋ผ ์ซ์๋น๊ต ์ฐ์ฐ์ ํ๋ ค๊ณ ํ๋ฉด ์๋๋๊น floatํ์ผ๋ก ํ๋ณํ ์์ผ์ ํ๊ฑฐ์ผ๊บผ์
"๊ฐ์ง๊ณ ์ค๋ ค๋ ๋ณ์"๋ผ๋๊ฒ var value = this.GetType().GetField(Input).GetValue(this); ์ฌ๊ธฐ์ ๋ค์ด๊ฐ๋ "Input" ๊ฐ ๋งํ๋ ๊ฑฐ ๋ง์? ๋ณธ๋ฌธ์๋ ๊ฐ๋ตํ๊ฒ ์ ์ธํ๋ค๊ณ ํ๋๋ฐ ์ ํํ ๋งํ๋ฉด ํจ์์์ ๋ถ๋ฌ์ค๋ ๋ณ์ ์์. ์ ํํ ๋งํ๋ฉด ํจ์ ์์ํ ๋ ์ ๋ public void addprocess(string Input); ์ด๋ฐ๊ฑฐ
var value = ~~ ์ด๊ฑด ์ ํจ์ ์์ ๋ค์ด์๋ ๊ฑฐ์๊ตฌ.
var value = this.GetType().GetField(Input); ์ด๋ฐ์์ผ๋ก ์งฐ๋๋ ์๋ฌ๋ ์๋์ง๋ง Debug.Log ํด๋ณด๋ฉด null ๊ฐ์ด ๋์จ๋ค. GetValue๋ ์ค์ํ๊ฐ๋ถ๋ค.
์์ public ์ด์ด์ผ ํ๋ค๋ ๋ง์ด ์์ด์ ์๋ก public string ์ ๋ง๋ค์ด์ ํด๋ดค์ง๋ง ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ์.. GetValue๊ฐ ์์ผ๋ฉด null์ด ๋จ๊ณ ์์ผ๋ฉด ์ค๋ธ์ ํธ ๋ฆฌํผ๋ฐ์ค ์๋ฌ๊ฐ ๋จ๋ ๊ฑธ ๋ณด๋ฉด ์๊ฐ ์ ค ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๊ธด ํ๋ฐ;
input์ด๋ผ๋ ์ด๋ฆ์ ๋ณ์๋ฅผ ๊ฐ์ ธ์ค๋ ค๋๊ฑฐ ์๋์ผ?? ๊ทธ input์ด๋ผ๋ ์ด๋ฆ์ ๋ณ์๊ฐ ๊ฐ์ ์คํฌ๋ฆฝํธ์ ์์ด์ผํด
input์ด๋ผ๋ string ๋ณ์๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ ๊ฑฐ ๋ง์ ใ ใ input์ด๋ผ๋ ๋ณ์๋ฅผ public void name (string input) ์ด๋ฐ ํจ์ ์์ ์ var value = ~ ๋ฅผ ๋ฃ์ด๋ ์๋ฌ๊ฐ ๋จ๊ณ , ๋ฐ๋ก public string input = "contents" ๋ก ์ ์ธํ ๋ค์ var value =~ ๋ฅผ ํด๋ ๋๊ฐ์ ์๋ฌ๊ฐ ๋ ...
์ง๊ธ์ ๋ฌธ์ ๋ GetInastance ๊ตฌ๋ฌธ์ด๋์ ์๊ด์์ด var value = ~ ์์ ๋ฆฌํ๋ ์ ์ ์ธ(?) ๋ฌธ๊ตฌ๋ถํฐ ์๋ฌ๊ฐ ๋ฌ๋ค๋ ๊ฑด๋ฐ... ๊ฒ์์ด๋ ๋ด ์งฑ๊ตฌ๋ฅผ ์ด ๋์ํด๋ณธ ๊ฒฐ๊ณผ GetField๋ ๋ด์ฉ, ๊ทธ๋ฌ๋๊น ๋ณ์ ์ด๋ฆ์ ๊ฐ์ ธ์ค๋ ๊ฒ ๊ฐ๊ณ GetType์ ํด๋์ค์ด๋ฆ? ๊ฐ์๊ฑธ ๋ฐ์ค๋ ๊ฒ ๊ฐ์๋ฐ GetValue๋ ๋์ ํ ๋ชจ๋ฅด๊ฒ ๋ค. ๊ฒ์๋ด์ฉ์ด๋ ์๋ฌ ๋ด์ฉ์ ๋ณด๋ฉด ์ค๋ธ์ ํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ ๊ฐ์๋ฐ ์ ๋ ๊ธ๋ก ์ฌ๋ผ๊ฐ ๊ธ์๋ ์ ์ ์ฉ๋๊ณ ๋๋ ์ ์ ์ธ๋ถํฐ ์๋ฌ๊ฐ ๊ฑธ๋ฆฌ๋ ๊ฒ์ธ๊ฐ.
์ฝ๋๋ ์ค๋ฅ๋ด์ฉ์ ์บก์ณํด์ ๋ณด์ฌ์ฃผ๋ผ ๊ทธ๊ฒ ๋์๋ฏ