게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
delegate 에 대하여 질문있습니다.
게시물ID : programmer_16791짧은주소 복사하기
작성자 : 과테말라걸인
추천 : 0
조회수 : 396회
댓글수 : 5개
등록시간 : 2016/04/19 10:35:12
옵션
  • 베스트금지
  • 베오베금지
  • 본인삭제금지
유니티로 프로그래밍중 막히는 부분이 있어서 질문드립니다.

프로그램은 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;
}......
.
.
.
.


이런 방법은.... 안됩니다.  

  
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호