이 질문에 Unity3D를 사용하고 있지만 일반적인 소프트웨어 엔지니어링 질문입니다.전역 상태에 따라 다르게 동작하는 객체의 디자인 패턴
Unity3D의 개체 (대화 형 개체)는 구성 요소 또는 동작으로 작성됩니다. 비헤이비어를 함께 사용하면 객체의 정확한 동작을 정의 할 수 있습니다.
다른 개체를 글로벌 상태에 따라 다르게 반응시키는 방법을 고민 중입니다. 예를 들어 대상을 타겟팅하는 도구는 장면의 원에만 적용됩니다. 그 도구를 선택하고 객체를 클릭하면 원이라면 사각형으로 바꿀 것입니다. 원이 아니라면 무시할 것입니다.
구성 요소 기반 엔터티 디자인을 사용하여 IsCircle이라는 동작을 정의하고이를 클릭하면 어떤 일이 일어나는지 확인합니다. 그러나 전체 응용 프로그램의 전역 상태에 액세스하는 가장 좋은 방법은 무엇입니까? if-else를 전환하지 않으려 고 솔루션을 분리하려는 경우
(문제는 OnMouseDown() 이벤트 핸들러가 매개 변수를 전달하지 않는다는 것입니다).
복합 패턴을 사용하는 환경에서 답을 기억해 주시면 감사하겠습니다.
아니요, 사실 그는 아래에 언급 된 가브리엘처럼 상태 패턴이 필요합니다. 실제로 Wikipedia의 상태 패턴 페이지에는 펜과 그림이 포함 된 예제가 포함되어 있습니다. http://en.wikipedia.org/wiki/State_pattern –
이 상황은 위키 피 디아 예제와 약간 다릅니다. 여기서 동작은 클릭 한 개체에 따라 다릅니다. 도구에 상태를 삽입하면 해당 주에서 반복되는 if 문으로 끝나며 어떤 유형의 모양을 볼 수 있습니다. 모양에 디자인과 같은 관찰자를 통해 상태를 주입하면 이러한 모든 if 문을 한 곳으로 모으고 반복되는 if를 많이 제거 할 수 있습니다. 도구를 변경할 때마다 활성 도구에 따라 모든 모양에 통보하고 한 지점에서 동작을 조정합니다. – derdo