목차
목표
FSM
사용할 변수
'wait' state
'checkObject' state
'isMenuOnScreen' state
'debugMenuOn' state
'debugMenuOff' state
screenpick의 example
목표
화면 상의 특정 오브젝트를 클릭했을때,
디버그 윈도우 화면을 불러온다.
다시 해당 오브젝트를 클릭하면, 디버그 윈도우를 닫는다.
FSM
사용할 변수
didPickObject : 게임오브젝트가 선택 되었는가?
pickedGameObject : 선택한 게임 오브젝트 저장
mouseX, mouseY : 마우스가 클릭된 화면상의 위치
isDebugMenuOnScreen : 디버그윈도우가 화면에 보이는 상태인지?
'wait' state
화면의 버튼눌림이 감지되면, 'menuMoveReaction' 이벤트를 보낸다.
Get Mouse X
와
Get Mouse Y
로 클릭된 화면상의 (x,y)를 얻는다.
Get…
이 위로 가야하나 싶었는데, 순서는 상관 없었다.
Get Button Down
과 같은 마우스 클릭에 대한 액션이 없으면, x/y 좌표를 얻을 수 없었다.
'checkObject' state
Screen Pick : 전제 조건이 있어서 헤매는 부분.
Screen Pick
으로 클릭된 위치의 오브젝트를 얻는다.
<color red>
Screen X
/
Screen Y
가 설정되지 않으면, 오브젝트를 얻어오지 않았다.</color>
didPickObject와 pickedGameObject 에 확인된 오브젝트를 저장한다.
Game Object Compare : 간단한 부분.
pickedGameObject와 “MonkeySymbol”(=내가 찾으려는 오브젝트)가 같은지 비교한다.
같으면, 'menuMoveReaction' 이벤트를 발생시킨다.
'isMenuOnScreen' state
isDebugMenuOnScreen, bool 변수를 검사
true : debugMenuOff 메시지 전송 (메뉴를 꺼라)
false : debugMenuOn 메시지 전송 (메뉴를 불러오라)
'debugMenuOn' state
어떤 오브젝트에 메시지를 보낼 것인지 ( 감각적으로는 그냥 함수 호출이지만 ) 정한다.
Scene 내부의 DebugObject에 붙어 있는 Component의 스크립트 함수를 호출한다.
debugMenuOn은 함수 이름으로 파라미터가 true면 메뉴를 불러오고 , false면 메뉴를 닫는다.
다음 상태 체크를 위해서,
Set Bool Value
액션으로 bool 값을 바꿨다.
'debugMenuOff' state
debugMenuOn와 같다. 전달하는 파라미터 값이 false 인 것이 다르다.