마우스 커서 사용자 설정
Ren'Py에는 사용자 정의 마우스 커서를 만드는 두 가지 방식이 있습니다. 하드웨어 마우스 커서를 사용하거나, Ren'Py가 디스플레이어블을 커서로 직접 그리게 할 수 있습니다.
하드웨어 커서의 장점은 다음과 같습니다.
반응이 매우 빠릅니다.
처리 부담이 적어 Ren'Py가 다른 작업에 더 많은 시간을 쓸 수 있습니다.
다음과 같은 제약도 있습니다.
작은 크기만 지원합니다. 32x32는 보장되며 64x64도 대체로 작동합니다.
이미지 파일의 연속으로만 구성할 수 있습니다.
디스플레이어블 커서는 Ren'Py가 그릴 수 있는 것이라면 무엇이든 사용할 수 있지만, 그리기 작업을 Ren'Py가 직접 처리해야 합니다. 컴퓨터에서 삼중 버퍼링을 사용하면 하드웨어 커서에는 없는 지연이 생길 수 있습니다.
하드웨어 마우스 커서
하드웨어 커서는 config.mouse 변수로 설정합니다. 커서 이름을 프레임 목록에 연결하는 딕셔너리입니다. 각 프레임은 이미지 파일과 이미지 안의 X·Y 오프셋으로 구성된 3요소 튜플입니다.
예를 들면 다음과 같습니다.
define config.mouse = { }
define config.mouse['default'] = [ ( "gui/arrow.png", 0, 0) ]
define config.mouse['spin' ] = [
( "gui/spin0.png", 7, 7 ),
( "gui/spin1.png", 7, 7 ),
( "gui/spin2.png", 7, 7 ),
( "gui/spin3.png", 7, 7 ),
( "gui/spin4.png", 7, 7 ),
( "gui/spin5.png", 7, 7 ),
( "gui/spin6.png", 7, 7 ),
( "gui/spin7.png", 7, 7 ),
]
여러 프레임으로 된 애니메이션은 초당 20프레임으로 재생됩니다. Ren'Py는 이미지나 오프셋이 바뀔 때만 커서를 갱신합니다.
커서 상태와 각 상태의 용도는 다음 표와 같습니다.
상태 |
용도 |
|---|---|
|
별도의 상태를 지정하지 않았을 때 사용합니다. 더 구체적인 키가 없을 때의 대체값이므로 반드시 정의해야 합니다. |
|
플레이어에게 say 스크린을 표시할 때 사용합니다. |
|
화면 전환 중에 사용합니다. |
|
선택지 같은 메뉴를 표시할 때 사용합니다. |
|
플레이어에게 입력을 요청할 때 사용합니다. |
|
이미지맵에서 사용합니다. |
|
버튼이나 이미지 버튼 위에 마우스를 올렸을 때 사용합니다. |
|
pause 문이나 renpy.pause()로 대기할 때 사용합니다. |
|
메인 메뉴에서 사용합니다. |
|
게임 메뉴에서 사용합니다. |
각 키에 pressed_ 접두사를 붙이면 마우스 버튼을 누르는 동안 사용할 커서를 지정할 수 있습니다. 예를 들어 버튼을 클릭할 때는 pressed_button을 사용합니다. 다른 누름 상태의 커서가 없을 때 쓸 기본 커서는 pressed_default로 지정합니다.
예를 들면 다음과 같습니다.
define config.mouse = { }
define config.mouse['default'] = [ ( "gui/arrow.png", 0, 0) ]
define config.mouse['pressed_default'] = [ ( "gui/arrow_pressed.png", 0, 0) ]
define config.mouse['button'] = [ ( "gui/arrow_button.png", 0, 0) ]
define config.mouse['pressed_button'] = [ ( "gui/arrow_button_pressed.png", 0, 0) ]
define config.mouse['menu'] = [ ( "gui/arrow_menu.png", 0, 0) ] # This cursor will be used when the player is in a menu
# Since there is no "pressed_menu" cursor, "pressed_default" cursor will be used instead
디스플레이어블 마우스 커서
디스플레이어블 커서는 config.mouse_displayable 변수와 MouseDisplayable을 사용합니다. 예를 들면 다음과 같습니다.
image mouse spin:
"gui/spin0.png"
rotate 0.0
linear 1.0 rotate 360.0
# Pause so image prediction can happen.
pause 1.0
repeat
define config.mouse_displayable = MouseDisplayable(
"gui/arrow.png", 0, 0).add("spin", "mouse spin", 9.9, 9.9)
- class MouseDisplayable(cursor, x=0, y=0)
커서용 디스플레이어블을 감싸서 플레이어의 마우스 움직임에 따라 화면에서 이동하게 하는 디스플레이어블입니다.
- cursor
마우스 커서로 그릴 디스플레이어블입니다. None이면 하드웨어 커서를 사용합니다.
- x, y
커서 이미지의 왼쪽 위를 기준으로 한 핫스폿의 가상 픽셀 좌표입니다.
- add(name, cursor, x=0, y=0)
name 상태에서 표시할 두 번째 커서를 추가합니다. MouseDisplayable 자체를 반환하므로 메서드 호출을 이어 쓸 수 있습니다.
마우스 커서 사용하기
일반적으로 스크린의 버튼이나 바처럼 포커스를 받을 수 있는 요소에 mouse 속성으로 커서 이름을 지정합니다. 예를 들면 다음과 같습니다.
screen test():
textbutton "마우스 테스트" action NullAction() mouse "spin"
default_mouse로 전역 마우스 커서를 설정할 수도 있습니다.
$ default_mouse = "spin"