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

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

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

안녕하세요?

 

이전 포스팅에서 언급한 명령 패턴을 연습한 C#의 코드에는 한가지 문제점이 있기는 있었습니다. 바로 다른 것이 아니라, 특정한 플레이어를 코드 안에서 지정했기 때문에, 명령을 내리는 플레이어-경우에 따라서는 캐릭터를 바꾸어서 할 수 있어야 하는 상황이 될 수도 있는데, 이런 경우에는 코드를 진짜로 하나 통째로 만들어야 하는 경우까지 생길 수 있습니다. 그래서 이런 것을 막아내기 위해서 실행을 위한 메세지에 캐릭터 명을 입력하는 것으로 어떻게 할 수 없는지 코드를 짜 보도록 했습니다.

 

 

우선 위 스크린샷에서 명령을 내리면 실행할 플레이어 개체에 대해서 일단 명령을 다르게 입력해 주도록 하였습니다. 그리고 이것만 해서는 안되고, 당연하다면 당연하게도 PlayerCommand 클래스에 가서는 변형을 주도록 합니다.

 

 

우선 여기서 중요한 것이 두가지가 있는데, 첫번째는 Type.GetType에 지정한 클래스의 이름만이 아니라 사용하고 있는 namespace가 있으면, 이 네임스페이스까지 포함시켜 줘야 하는 것이 중요했습니다. 그리고나서 Activator.CreateInstance()라는 메서드를 이용해서 얘네 클래스를 메모리에 올려놓고 사용이 가능한 무언가로 바꾸어 주어야 합니다.

 

 

그리고 다음이 가장 많이 헤메었는 부분인데, 여기서는 일단 A is B C라는 구문을 이해해야 합니다. 만약 A가 B라면 A를 C라는 이름의 변수로 지정한다라는 상당히 복잡한 명령을 간단하게 만들어 놓은 구문입니다. 그리고 여기서 중요한 것은 C라는 이 변수의 이름을 지정해서 PlayerOne이라는 클래스에 있는 메서드를 실행하도록 지정해야 에러가 뜨지 않고 실행이 됩니다. 다시말하면, C라는 변수 이름으로 지정한 이름을 가지고 와서 사용을 해야 하는 것입니다.

 

 

이렇게 해서 플레이어를 필요할 때 마다 다르게 지정을 해서 어떻게 명령을 내릴 수 있는 코드로 바꾸어 보는데 성공했습니다. 이제 다음으로 빼먹은 요소가 있어서 이걸 소개해야 합니다.

 

 

간단하지만, 빼먹으면 안되는 것으로 가장 윗줄에 using항목에다가 Reflection을 사용하고 있다는 것을 지정해야 합니다. 이로서 여기까지 실습한 내용을 다 올리기는 했습니다만, 문제는 이런다고 끝이 아니라 아직 남아 있는 분량이 명령 패턴에 남아 있습니다. 이 부분까지도 실습을 하나하나 해서 어떻게 그 내용을 올려 봐야 합니다.

반응형