본문 바로가기

쯔꾸르 강좌/단간론파 제작

단간론파 - 메뉴 제작하기 [쯔꾸르]

단간론파의 기본

[메뉴 제작하기]

[동영상 예시]


: 메뉴 UI 다운로드 주소 :

(구글 드라이브)

https://drive.google.com/open?id=1b7tOIQxybXdqYp1OzRXd6OVz5_AcDPFs



먼저 메뉴 구현에 앞서, X키는 쯔꾸르 기본 메뉴 호출 키라 
기본 메뉴 호출을 금하는 명령어를 써야합니다.
Change Menu Access = Disable 해주어야
X키를 누르면 기본 메뉴가 뜨지 않습니다.

물론, 만약 Shift나 다른 키로 메뉴를 호출할 것이라면 상관없는 얘기입니다.

메뉴는 Common Events 내에서 구현해야 편합니다.
맵과는 상관없이 언제 어디서나 메뉴를 호출하기 위해서 인데요,
이를 위해서 메뉴 스위치인 0001:전자학생수첩 ON이 ON 된 상태일 경우,
언제든 메뉴 호출이 될 수 있도록
병행처리인 Parallel Process로 두면 됩니다.

그러면 언제든 메뉴를 불러올 수 있는 상태가 구현 된 것입니다.

(참고로 계속 0001:전자학생수첩 ON 스위치를 계속 ON으로 둘 경우, 대화나 이벤트 등등에서 플레이거가 실수로 X키를 누를경우, 이벤트 도중 메뉴가 호출되므로,
이벤트 맨 앞부분에 해당 스위치를 잠깐 OFF로 꺼주었다가, 이벤트 끝에서 다시 ON으로 해주어야 합니다)


이제 그 상태에서 X키를 누르면 메뉴가 뜰 수 있도록 해 봅시다.
예시와 함께 간단한 알고리즘으로 설명해 드리겠습니다.


0299:전자수첩단계

0 -> 메뉴 호출이 안 된 상태
1 -> 메뉴 호출이 된 상태
2 -> 메뉴 내의 탭을 고른 상태


0299:전자수첩단계 == 0    // 메뉴 호출이 안 된 상태에서
{
    B Button is Being Pressed     // X 버튼을 누르면
    {
        0002:전자학생수첩 획득상태 == OFF // 전자학생수첩이 OFF 인 경우 
        {
            메세지 출력 : 전자학생수첩을 획득하지 못하였습니다.
        }

Else // 전자 학생 수첩을 가지고 있을 경우
{
    ~
    필요한 메뉴 UI를 호출
    ~
   Player (Repeat) : Wait : 50Frame(s)        // 캐릭터 고정시키기
    
0299:전자수첩단계 = 1   // 메뉴를 호출했으니 1 대입
    0300:목록리스트 = 0      // 메뉴탭 번호 초기화 (ex: 0- 지도, 1-프로필...)

        모노코인 개수에 따른 표시
        }    
    }
}

까지가 메뉴 호출입니다.
필요한 UI는 show picture로 보여주면 되고,
tint, move 등으로 연출을 주면 됩니다.


다음은 메뉴를 끄는 기능입니다.


0299:전자학생단계 == 1        // 메뉴가 호출된 상태면
{
    B Button Is Being Pressed    // 다시 X버튼이 눌렸을 경우
    {
        0299:전자수첩단계 == 0
        0300:목록리스트 == 0
        기타 등등 변수 및 스위치 값들초기화
        ~
        메뉴 UI 제거
 

         Player (Skip) : Wait : 1 Frame(s)        // 캐릭터 움직임 활성화
    }
}

까지가 메뉴를 끄는 구조입니다.
역시 호출했던 UI는 전부 제거하고,
변수와 스위치 값들을 호출 전으로 초기화시켜주는 작업도 필요합니다.


다음은 메뉴 호출 이후, 방향키로 지도 메뉴, 프로필 메뉴 등등,
하위 메뉴를 고르는 부분입니다.



0300:목록리스트 - 하위 메뉴 (ex)
0 - 지도 메뉴
1 - 말탄환 메뉴
2 - 선물 메뉴
3 - 프로필 메뉴
4 - 규칙 메뉴
5 - 세이브 메뉴


0299 : 전자수첩단계 == 1            // 메뉴가 호출된 상태인 경우
{
   
The Right Button is Being Pressed         // 방향키 -> 버튼이 눌렸을 경우
    {
        0300:목록리스트 == 5            // 목록리스트 변수 값이 5일 경우
        {
         
  0300:목록리스트 = 0            // 목록리스트에 0 대입 (세이브(5)->지도(0))
        }
        else
        {
            0300:목록리스트 += 1        // 목록리스트 값에 +1
        
}
    0300:목록리스트 == 0
    {
        지도메뉴 선택에 따른 연출
    }
    0300:목록리스트 == 1
    {
        말탄환 메뉴 선택에 따른 연출
    }
    .
    .
    .
    }
}

까지가 메뉴가 호출된 경우 방향키에 따라 메뉴를 고르는 방법입니다.
위 예시는 -> 키로만 예제로 들었으니 반대로 <-키 혹은 위 아래키로 바꿔주면 됩니다.

다음은 하위 메뉴를 '선택'했을 경우입니다.

The C Button Is Being Pressed        // Z버튼을 누르면
{

    0299:전자수첩단계 == 1            // 메뉴 호출상태인 경우
    {
       
0300:목록리스트 == 0            // 지도 메뉴(0)가 선택된 경우
       
{
            0299 : 전자수첩단계 = 2        // 하위 메뉴가 호출된 경우인 2 대입
           
0298 : 상세리스트 = 0           // 하위 메뉴 변수 초기화 (1층지도, 2층지도)
            상위 메뉴 UI 제거 및 하위 메뉴, 지도 UI 호출
        }
    }
}

위 예제처럼 각 목록리스트가 0일 경우, 1일 경우, 2일 경우에 따라
각기 다른 메뉴 UI를 호출하시면 됩니다.
0298:상세리스트의 경우 지도 메뉴의 경우, 1층 지도 2층 지도를 구분하는 변수,
말탄환 메뉴일 경우, 말탄환 번호를 구분하는 변수,
프로필 메뉴일 경우, 각 인물을 지칭하는 변수로 쓰입니다.


이번엔 반대로 지도 메뉴를 끄는 부분입니다.

0299 : 전자수첩단계 == 2        // 하위 메뉴가 호출된 경우
{
    0300:목록리스트 == 0       // 지도 메뉴일 경우
    {
        The B Button is Being Pressed        // X버튼이 눌린 경우
       
{
            0299:전자수첩단계 = 1
            0298:상세리스트 = 0
            0297:프로필 / 지도탭 스크롤 = 0        // 변수 초기화
            -
            지도 메뉴 UI 제거 및 상위 메뉴 호출
        }
    }
}

0297 변수는 더 복잡한 기능 수행을 위해 별도로 만들었던 변수라서 무시하셔도 됩니다.
자유행동시 지도에 각 인물들의 위치를 표시하기 위한 변수라서,
그러한 기능을 고려하지 않는 단순 지도 메뉴일 경우엔 필요없습니다.

다음은 지도 메뉴가 호출되었을 때 지도를 확인하고 탐색하는 명령어 구조입니다.

0299 : 전자수첩단계 == 2        // 하위 메뉴가 호출된 상태면
{
    0300:목록리스트 == 0        // 지도 메뉴가 호출된 상태면
    {
        The C Button is Being Pressed        // Z버튼을 누르면
        {
            필요한 기능 수행
        }

        The Right Button is Being Pressed        // -> 키를 누르면
        {
            필요한 기능 수행
        }
    }
}

필요한 기능 수행 부분에 원하는 기능을 넣으면 완성입니다.
제 경우에는 아까 말했듯, 자유행동때 인물들의 위치를 보여주는 기능과,
방향키를 누르면 1층지도, 2층지도, 3층지도를 보여주는 기능을 구현했습니다.

가장 큰 뼈대만 다뤄보았는데, 이 뼈대를 기초로
변수만 0, 1, 2 바꿔가면 다른 메뉴도 간단히 구현할 수 있습니다.
약간의 시행착오를 겪으면서 연출, 버그도 잡으면 단간론파식 완벽한 메뉴가 나오겠죠.