사용자 도구

사이트 도구


language:unity:playmaker:screenpick

screenpick의 example

목표

  1. 화면 상의 특정 오브젝트를 클릭했을때,
  2. 디버그 윈도우 화면을 불러온다.
  3. 다시 해당 오브젝트를 클릭하면, 디버그 윈도우를 닫는다.

FSM

사용할 변수

  • didPickObject : 게임오브젝트가 선택 되었는가?
  • pickedGameObject : 선택한 게임 오브젝트 저장
  • mouseX, mouseY : 마우스가 클릭된 화면상의 위치
  • isDebugMenuOnScreen : 디버그윈도우가 화면에 보이는 상태인지?

'wait' state

  • 화면의 버튼눌림이 감지되면, 'menuMoveReaction' 이벤트를 보낸다.
  • Get Mouse XGet Mouse Y로 클릭된 화면상의 (x,y)를 얻는다.
  • Get…이 위로 가야하나 싶었는데, 순서는 상관 없었다.
  • Get Button Down과 같은 마우스 클릭에 대한 액션이 없으면, x/y 좌표를 얻을 수 없었다.

'checkObject' state

  1. Screen Pick : 전제 조건이 있어서 헤매는 부분.
    • Screen Pick으로 클릭된 위치의 오브젝트를 얻는다.
    • <color red>Screen X / Screen Y가 설정되지 않으면, 오브젝트를 얻어오지 않았다.</color>
    • didPickObject와 pickedGameObject 에 확인된 오브젝트를 저장한다.
  2. 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 인 것이 다르다.

language/unity/playmaker/screenpick.txt · 마지막으로 수정됨: 2024/04/23 22:45 저자 127.0.0.1