본문 바로가기

렌파이/GUI 꾸미기

스크린 언어 (7) 기타 편리한 UI 소개

타이머나 단축키 등 쓸만한 기능들은 눈에 보이지 않지만 스크린 언어의 명령문으로 만들 수 있습니다.

key 단축키

단축키를 만들 때 사용하는 명령문입니다.
명령문 오른쪽에 단축키로 만들 키의 심볼을 적고 해당 키가 눌렸을 때 실행할 액션을 적으면 됩니다. 키심볼 자리에는 a,b, A, B, (, ) 처럼 막바로 키보드를 눌렀을 때 나타나는 글자로 적어줘도 됩니다. 펑션 키(f1~f12같은 것들)이나 insert, home, page up..등 눌러도 따로 글자같은 걸 볼 수 없는 키에는 해당 키의 명칭이 따로 있으니 그것을 적어주면 됩니다. 각 키의 명칭은 파이게임 매뉴얼에서 확인할 수 있습니다.


위 스크립트에서 game_menu 라는 키는 렌파이 게임 메뉴를 띄우는 키를 가리킵니다. 보통은 마우스 오른쪽 버튼이랑 ESC 키, 조이패드의 메뉴키가 게임 메뉴를 띄우는 키입니다. 다른 버튼, 예를 들면 m 키를 눌렀을 때 게임 메뉴가 뜨도록 만들었다면 key game_menu는 key m 과 같습니다.

스크린 언어로 만든 단축키가 게임 진행하는 내내 먹히도록 만들고 싶다면 call screen 보다는 show screen 명령문이 더 적합할 것입니다. 참고로 렌파이에는 기본으로 지정된 단축키가 일부 있습니다. 단축키를 만들 때는 기존 단축키와 겹치지 않도록 주의해야 합니다. 물론 겹치더라도 스크린 언어로 만든 키가 우선 작동하긴 하지만, 그 키에 할당되었던 기본 기능이 작동하지 않으니까요.

기본 단축키는 이곳에서 확인할 수 있습니다.

mousearea 마우스 반응 영역

mousearea 문으로는 마우스가 접근 할 때, 멀어질 때 반응하는 영역을 만들 수 있습니다. 예를 들어 프린세스 메이커 5에서는 화면 가장자리로 마우스 커서를 옮기면 게임 메뉴가 등장하는데, 그런 기능을 mousearea로 만들어 줄 수 있습니다.
area로 마우스에 반응할 영역을 지정하고, hovered 에는 area로 지정한 영역에 마우스가 올라갔을 때 실행할 액션을, unhovered 에는 마우스가 사라졌을 때 실행할 액션을 적어주면 됩니다.

area 속성을 지정하지 않아도 되지만 그렇게 되면 화면 전체가 마우스 커서에 반응하게 되므로 반드시 area 를 지정해야 합니다.
또한 마우스가 없는 게임 플레이 환경에서는 mousearea를 사용한 기능이 쓰기 곤란해질 수도 있습니다. 이 점을 유의하여야 합니다.


timer 타이머

일정 시간이 지날 때마다 액션을 실행하도록 하는, 말 그대로 타이머입니다. repeat 속성을 True로 입력하면 매 시간이 경과할 때마다 액션을 실행하도록 만들 수도 있습니다.



null 빈 공간

지정한 너비, 높이만큼 빈 공간을 만들어냅니다. 의외로 쓸모가 있습니다. 예를 들어 grid 로 격자판을 만들 때는 격자판을 다 채우지 않으면 에러가 나는데, 빈 자리를 null 로 채우도록 하면 쓸 데 없는 gui를 추가하지 않고도 grid를 에러 없이 사용할 수 있습니다.


viewport 뷰포트

게임 화면 크기보다 큰 무언가를 보여줄 때 쓸 수 있는 ui입니다. 마우스 휠을 굴리거나 스크롤바를 내리거나 해서 뷰포트의 하위 위젯을 이리저리 살펴볼 수 있습니다. area_size 에 뷰포트의 크기를 설정하고, add 등으로 하위 위젯을 넣어줍니다.

사실 뷰포트에 하위 위젯만 담아도 이리저리 움직여 볼 수는 있습니다만 뷰포트만으로는 이게 움직일 수 있는 건지 없는 건지 알 수가 없으니, 뷰포트에 vbar, bar 명령문으로 스크롤바를 만들어주어야 합니다. 참고로 보통 뷰포트를 만들 때는 side 명령문으로 바와 뷰포트를 정렬합니다.