목차

이전 항목

스크린과 파이썬

다음 항목

제작자 정의 디스플레이어블

링크


원문 보러 가기
오역 신고하기
Created using Sphinx.

모드

렌파이 엔진에서 모드Mode란 인터렉션의 종류를 설명하는 간결한 방법입니다. 렌파이에 모드가 입력되면, 사용자가 정의한 콜백을 실행할 수 있습니다. 이 콜백으로 사용자 인터페이스를 재설정해 모드가 바뀔 때마다 어떤 동작을 할 것인지 정할 수 있습니다. 예를 들면 ADV 모드에서 NVL 모드로 바꿀 때 트랜지션이 발생하도록 할 수도 있습니다.

모드 시스템이 존재하는 이유는 인터렉션 등이 바꿀 때마다 이를 감지하고 변경된 내용에 반응하는 강력하면서도 유연한 방법을 제공하는 것입니다.

기본 모드

다음은 내장 인터렉션에 상응하는 모드들입니다.:

start
이 모드는 렌파이에서 게임이 시작하는 등 새로운 상황이 생성될 때를 나타내는 모드입니다. 렌파이는 이 모드에 자동으로 접근하지 않습니다. 대신 start 모드를 모드 리스트에 추가하기 위해 모드 리스트를 초기화합니다.
say
ADV모드의 say 문이 실행될 때 렌파이가 진입하는 모드입니다.
menu
ADV 모드의 선택지가 실행될 때 렌파이가 진입하는 모드입니다.
nvl
NVL모드의 say 문이 실행될 때 렌파이가 진입하는 모드입니다.
nvl_menu
NVL 모드의 선택지가 실행될 때 렌파이가 진입하는 모드입니다.
pause
renpy.pause() 가 실행될 때 렌파이가 진입하는 모드입니다. 멈춤 시간이 설정되지 않은 pause 명령문이 발생한 때에도 렌파이는 이 모드에 진입합니다.
with

with 명령문으로 인해 트랜지션이 발생할 때 렌파이가 진입하는 모드입니다. 멈춤 시간이 설정된 pause 명령문에도 사용할 수 있습니다.

with 모드는 scene, show, hide 명령문이 실행된 후에 나타나는 with 명령문의 시작 지점에 진입합니다.

screen
call screen 명령문을 사용해 스크린이 만들어졌을 때 렌파이가 진입하는 모드입니다.
imagemap
renpy.imagemap() 을 사용해 구식 이미지맵이 만들어졌을 때 렌파이가 진입하는 모드입니다.
input
renpy.input() 함수를 사용해 텍스트 입력을 받을 때 렌파이가 진입하는 모드입니다.

다른 모드는 renpy.mode 함수를 호출하여 진입할 수 있습니다.

renpy.get_mode()

현재 모드를 반환하도 모드가 정의되지 않았다면 None을 반환한다.

renpy.mode(mode)

렌파이가 지정된 모드로 진입하도록 한다. 이미 그 모드에 진입했다면 그대로 머무른다.

모드 콜백

config.mode_callbacks 변수는 렌파이가 모드에 진입할 때마다 발생되는 모드 콜백 리스트를 포함하고 있습니다. 모드 콜백은 두 개의 매개변수와 함께 호출됩니다.

mode
진입하려는 모드의 이름을 지정하는 문자열.
old_modes
렌파이 시스템이 이전에 진입했던 모드들을 지정하는 문자열의 리스트. 순서는 뒤쪽으로 갈 수록 예전에 진입했던 모드입니다.

이미 접근되어있는 모드에 진입할 때에는, old_modes 에 있는 첫 번째 항목이 mode 와 동일해집니다.

모드 콜백 예제

예제에 나와있는 모드 콜백은 ADV 모드와 NVL 모드를 서로 바꿀 때 트랜지션이 나타나게 만드는 함수입니다. 이미 렌파이 기본 기능이므로 사용할 필요는 없습니다.

init python:
    def _nvl_adv_callback(mode, old_modes):

        old = old_modes[0]

        if config.adv_nvl_transition:
            if mode == "nvl" or mode == "nvl_menu":
                if old == "say" or old == "menu":
                    nvl_show(config.adv_nvl_transition)

        if config.nvl_adv_transition:
            if mode == "say" or mode == "menu":
                if old == "nvl" or old == "nvl_menu":
                    nvl_hide(config.nvl_adv_transition)

    config.mode_callbacks.append(_nvl_adv_callback)