각 맵별로 사용할 수 있는 스킬들을 다르게 하고 싶은 경우,
int형인 스킬 넘버를 Random.Range로 받아온 뒤에 Update()에서 계속 스킬 넘버를 검사하면서 특정 함수를 호출해주는 것은
스킬이 많으면 많을수록 성능이 떨어진다고 생각했다.
이를 해결하가 위해서는 스킬들이 모여있는 스크립트를 따로 두고, 플레이어의 스크립트에 함수 포인터를 둔 뒤
Start() 에서 그 함수 포인터에 특정 스킬 함수를 넣어준 뒤에 사용하면 된다.
public Action skill; switch(skillNum) { case 1: skill = Skils.instance.Skil1; break; case 2: skill = Skils.instance.Skil2; break; case 3: skill = Skils.instance.Skil3; break; case 4: skill = Skils.instance.Skil4; break; }
Action은 delegate로, 리턴형과 인자가 없다. 만약 인자가 필요하다면 delegate로 직접 반환형과 인자를 지정해주어서 사용하면 될 것 같다.
'Unity 공부시작 > Unity2D 게임 및 기능구현' 카테고리의 다른 글
유니티2D :: 오브젝트 원래 있던 위치로 돌아가기 (0) | 2019.01.19 |
---|---|
유니티2D :: 애니메이션의 전환이 느린 경우 (0) | 2019.01.18 |
유니티2D :: 대화 이벤트 구현 연습 (2) | 2019.01.18 |
유니티2D :: 캐릭터 이동, 점프 및 애니메이션 구현 (0) | 2019.01.17 |
Unity2D 기능 구현 :: 날아오는 화살 막아내기 (0) | 2019.01.07 |