カスタムマウスカーソル link

Ren'Py はカスタムマウスカーソルを作成する2つのシステムがあります。1つ目はハードウェアマウスカーソルの利用であり、2つ目は Ren'Py を使用してマウスカーソルとして displayable を描画します。

ハードウェアマウスカーソルは以下の利点を持ちます :

  • 高速

  • オーバーヘッドがとても低く Ren'Py に他のことをする時間を残します。

以下の制限があります :

  • カーソルサイズは小さく制限されます。 32x32 が保証され、 64x64 は広く動作します。

  • カーソルは一連の画像ファイルに制限されます。

Ren'Py を使用してカーソルとして Displayable を描画するならこれらの制限は逆になります。カーソルは Ren'Py が描画できるどんなものでも可能な一方 Ren'Py が描画する必要があります。トリプルバッファリングがコンピュータで有効なら、ハードウェアカーソルではなかったラグが発生し得ます。

ハードウェアマウスカーソル link

ハードウェアカーソルは config.mouse 変数によって制御されます。この変数は辞書で構成され、マウス名をフレームリストに対応させます。各フレームは 3要素のタプルであり、画像ファイルとその画像内の X, Y オフセットです。

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 ),
]

アニメーションが複数のフレームで構成されるなら、フレームは20fpsで再生されます。 Ren'Py は画像またはオフセットが変更されたときのみカーソルを変更します。

次の表はカーソルがなる様々な状態と対応する使用方法を示しています。 :

状態

使用方法

default

他の状態が指定されない限り常に使用されます。より具体的キーがないときに使用されるため、常になければなりません。

say

プレイヤーが "Say" スクリーン上にいれば使用されます。

with

トランジション中使用されます。

menu

(選択肢など)メニューで使用されます。

prompt

入力を求められると使用されます。

imagemap

イメージマップで使用されます。

button

ボタンやイメージボタン上にプレイヤーがあれば使用されます。

pause

ポーズや renpy.pause() 中に使用されます。

mainmenu

メインメニューで使用されます。

gamemenu

ゲームメニューで使用されます。

すべてのキーにはオプションで 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

Displayable マウスカーソル link

Displayable カーソルは config.mouse_displayable 変数と MouseDisplayable displayable を使用します。例

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, y) link

マウスカーソル Displayable をラップして、プレイヤーがマウスを動かすときに画面に表示させる Displayable です。

cursor

マウスの描画に使用される Displayable です。

x, y

マウスの左上に対するピクセル数でのホットスポットの座標です。

add(name, cursor, x, y) link

name マウスが表示時に使用される、二つ目のカーソルを追加します。これは MouseDisplayable を返すので、チェインを繋げられます。

マウスカーソルの使用 link

マウスカーソルの通常の使用方法では、そのカーソル名を指定する mouse プロパティーをスクリーンのフォーカス可能なもの(ボタンやバー)に提供します。例

screen test():
    textbutton "Mouse Test" action NullAction() mouse "spin"

default_mouse を使用してグローバルなマウスカーソルの設定も可能です

$ default_mouse = "spin"