유니티로 프로그래밍중 막히는 부분이 있어서 질문드립니다.
프로그램은 c#입니다..
컴퓨터 고수님들... 합성위임에 대하여 질문드리고자 합니다....
제가 얻고자 하는 프로그램은 특정 조건일 경우에.... 특정한 함수를 위임시키고자 하는데요.
일단 예시를 들어보겠습니다.
// 가독성을 높이기 위해 잡다한 명령들은 빼겠습니다...
// ====================================================
delegate void MyDelegate();
MyDelegate _dele;
void Start() // 유니티에서는 이것이 자동적으로 실행됩니다.
{
_dele += One;
_dele += Two;
_dele += Three; // 세가지 함수를 위임하고
_dele(); //실행하면 프린트가 잘됩니다.
}
void One()
{
print(" 1 \n");
}
void Two()
{
print(" 2 \n");
}
void Three()
{
print(" 3 \n");
}
// ====================================================
합성위임을 해서 세가지 함수를 동시에 쓰는 프로그램입니다. 아주 잘 작동합니다.
그런데 처음 말씀드렸다싶이... 특정 조건에 맞는 함수만 추가 하고 싶어 다음과 같이 작성하였습니다.
여기서 부터... 문제가 많습니다....
//===================================================
delegate void MyDelegate();
MyDelegate _dele;
int[] input = new int[]{
2,3,2,1,1
};
string[] calls = new string[]{
"one", "Two", "Three"
};
void Start() // 유니티에서는 이것이 자동적으로 실행됩니다.
{
_dele += input [0];
_dele += input [1];
_dele += input [2];
_dele();
}
void One()
{
print(" 1 \n");
}
void Two()
{
print(" 2 \n");
}
void Three()
{
print(" 3 \n");
}
// ====================================================
당연히 실행되지 않습니다.....
이것이 되게 하고 싶습니다...
결론적으로 질문 내용을 정리하면...
1. 합성 위임시 위임할 함수의 이름을 배열로 저장하여 번호만 가지고 함수의 이름을 불러오는 방법...
2. 혹은 딕셔너리를 활용할 수 있는 방법....
3. 혹은 string을 함수이름으로 활용할 수 있는 방법....
어떤 방법이라도 좋으니... 번호만 가지고 함수를 위임시킬 수 있는 방법을 알려주십시오.
지금 여기서 막혀서... 진행이 안됩니다....
P.S
if(a == 1){
_dele += One;
}else if(a == 2){
_dele += Two;
}......
.
.
.
.
이런 방법은.... 안됩니다.