본문 바로가기
유니티5 독학 & 게임 제작

디자인 패턴 공부 - 명령패턴의 학습 -4-

by 인터넷떠돌이 2024. 2. 15.
반응형

안녕하세요?

 

지난번 포스팅에서 어떻게 해서 플레이어 - 명령을 게임상에서 내리면, 이를 실행할 캐릭터를 지정하는 법에 대해서 한번 코드를 작성했습니다만, 여전히 문제점이 있다면 있습니다. 바로 명령을 일일히 클래스안의 메서드에 집어넣는 좀 비효율적인 과정이 있기는 있었습니다. 이번에는 이런 것을 극복하고, 어떻게 명령도 리스트 형식으로 만들어서 한꺼번에 입력을 할 수 없는지에 대해서 한번 알아 보기로 했습니다.

 

 

먼저 위 스크린샷에서 볼 수 있는 것처럼 Add메서드를 써서 일일히 리스트 형식의 변수에 자료를 입력하지 않고, 아예 하나의 리스트를 선언한 다음, 이 리스트만 넣도록 만들어 보았습니다.

 

 

그리고 나서 기존에 있는 클래스에서 한번 리스트를 선언하는 부분은 주석처리를 하도록 하고, 그 다음에는 실행을 의미하는 execute에 대해서 한번 새로운 메서드의 매개변수를 집어넣을 수 있도록 만들어 보도록 했습니다.

 

 

이 과정에서 switch와 case구문이 사용이 되었습니다. 일단 여기까지는 if문을 이용해서 하는 것 까지 다 같습니다만, 문제는 바로 이 다음에 있습니다.

 

 

상속에 관해서 알아두어야 하는 사항인데, 제 아무리 virtual 처리된 부모 클래스의 메서드라도, 자식 클래스에서 override로 수정을 가한다고 해도, 메서드의 매개변수를 더 늘리는 것은 못한다는 것 입니다. 여기서는 부모 클래스도 맞춰서 무언가를 따라해야 하는 것이 있기 때문에 뭐라고 해야 할까요? 일단 부모 클래스에서 메서드를 설정할 때 조심해서 설정하지 않으면 나중에 상당히 애로사항이 많아지는 일이 있다고 해야 할까요? 하여튼 이런 것을 몰라서 잠깐 애를 먹었습니다.

 

 

이렇게 해서 이번에도 실행이 막힘이 없이 제대로 되는 것을 확인할 수 있었습니다. 어떻게 답을 알면 간단하게 해결할 수 있는 것인데, 문제는 이걸 몰라서 헤메인 것이 있었습니다. 이제 다음으로 해야 할 것으로는 역시나 전통적인 명령패턴을 하기 위해서는 invoke 클래스가 있어야 하는데, 이것에 대해서 한번 만들어서 적용시키는 단계까지 가 보도록 해야 겠습니다.

반응형