Ren'Py 中文文件 7.0.1
  • 官方首頁
  • Ren'Py中文空間
  • Site
      • 快速入門
      • GUI(圖形用戶介面)訂製化指導
      • 程式語言基礎
      • 腳本標籤(label)和主控流程
      • 對話(dialogue)和旁白(narration)
      • 顯示圖像
      • 遊戲內菜單
      • Python語句
      • 條件語句
      • 音訊
      • 影片
      • 語音
      • 文本
      • 多語言支持
      • 可視組件
      • 變換
      • 轉場(transition)
      • 動畫和變換語言
      • Matrixcolor
      • 層疊式圖像
      • 3D舞台
      • Live2D Cubism
      • 樣式(style)
      • 樣式特性(property)
      • 界面和界面語言
      • 界面行為(action)、值(value)和函數
      • 特殊界面名稱
      • 界面語言最佳化
      • 配置項變數
      • 環境設定配置
      • 存儲區配置項
      • 訂製滑鼠游標
      • 硬體滑鼠游標
      • 可視組件滑鼠游標
      • 使用滑鼠游標
      • 開發者工具
      • 互動式編導器(interactive director)
      • NVL模式教學
      • 文本輸入
      • 頭像
      • 畫廊、音樂空間和場景重播
      • 拖放組件
      • 精靈(sprite)
      • 訂製按鍵映射
      • 成就
      • 對話歷史
      • 多角色對話
      • 啟動界面和載入等待
      • Live2D Cubism
      • 等效語句
      • 存檔、讀檔和回滾
      • 持久化數據
      • Python中的變換(transform)和轉場(transition)
      • 高級GUI
      • 界面與Python
      • 模式
      • 創作者定義的可視組件
      • 創作者定義的語句
      • 訂製文本標籤
      • 角色回調函數
      • 文件讀寫
      • Color類
      • Matrix
      • 基於模型的渲染器
      • 其他函數和配置變數
      • 生成分發版
      • web更新器
      • 安卓(Android)
      • Chrome OS/Chrome瀏覽器
      • iOS
      • 程序內購
      • 手勢
      • 樹莓派
      • 處理故障
      • 環境變數
      • 自動語音
      • 集成文本編輯器
      • 皮膚
      • Ren’Py多語言支持
      • 變更日誌(Ren’Py 7.x-)
      • 變更日誌 (Ren’Py 6.11 - 6.99)
      • 不相容的變更
      • 分發器筆記
      • 許可證
      • 製作人員
      • Ren’Py開發贊助者
      • “The Question”遊戲腳本
      • NVL-模式 “The Question” 腳本
  • 遊戲內菜單
    • 菜單集(menu set)
    • 菜單入參

遊戲內菜單 link

在許多視覺系小說中,用戶會在被要求為故事情節的走向做出選擇。Ren’Py腳本語言中包含了menu語句,使得向用戶展現選項十分容易。

這裡有個menu語句的樣例:

menu:
     "我應該幹嘛?"

     "喝咖啡":
         "我喝了咖啡,每一口都非常棒。"

     "喝茶":
         $ drank_tea = True

         "我喝了茶,並努力使講話不像發表政治聲明。"

     "跪拜禮":
         jump genuflect_ending

label after_menu:

     "喝完飲料後,開始繼續我的晨間時光。"

menu語句以關鍵字 menu 開頭。後面可能跟著一個腳本標籤(label)名,該文本標籤(label)下的語句塊可以被預處理為菜單選項。舉例如下:

menu drink_menu:
    ...

menu語句後面跟著一個縮進的語句塊(block)。該語句塊(block)可能包含一條 say語句,且必須包含至少一個菜單選項。若存在那條say語句,發言內容與菜單選項會同時在界面上顯示。

菜單選項。 菜單選項是用戶在遊戲內菜單中的可選項。菜單選項以一個字串開頭。該字串後面可能跟一個if分句。這個if分句增加了不同情況下的選項是否出現的功能。菜單選項以英文冒號結束,下面必須跟著一個Ren’Py語句塊。

當某個選項被選中,該選項下對應的語句塊(block)就會執行。執行到那個語句塊結尾時,會跳轉到menu語句結尾並執行之後的腳本。

if分句包含關鍵字 if ,後面跟著一個python表達式。只有當表達式為True時,該菜單選項才會顯示。例如下面的菜單中:

menu:
    "向左":
        ...
    "向右":
        ...
    "向前看" if drank_tea:
        ...

只有在“the drank_tea”變數為True時才顯示第三個選項。(不過,如果配置項 config.menu_include_disabled 被設置為True的話,這個選項會顯示為一個不可用的按鈕。)

菜單集(menu set) link

menu語句後面可以使用一個set從句。set從句單獨占一行。 當menu後面存在set從句時,只有菜單集(menuset)中沒有的選項標題才會單獨顯示。 當某個選項被選中後,對應標題就可以添加到菜單集中。

如果整個菜單中沒有任何一個可用的選項,就直接進入menu語句後面的腳本。

基於某些歷史原因,菜單集可以是一個set對象或者一個列表。

default menuset = set()

menu chapter_1_places:

    set menuset
    "我該去哪裡呢?"

    "去上課。":
        jump go_to_class

    "去酒吧。":
        jump go_to_bar

    "去監獄。":
        jump go_to_jail

label chapter_1_after_places:

    "這個週二真他媽該死!"

菜單入參 link

可以將入參傳給整個菜單,或者菜單內的某些選項。若要將入參傳給菜單,可以直接添加在menu語句中。 按順序傳入自訂的入參,使用逗號分隔。若要將入參傳給某個菜單選項,在 if 關鍵字或者冒號前面加入參內容。

menu ("jfk", screen="airport"):

    "伊利諾州,芝加哥" (200):
        jump chicago_trip

    "德克薩斯州,達拉斯" (150, sale=True):
        jump dallas_trip

    "阿肯色州,溫泉城" (300) if secret_unlocked:
        jump hot_springs_trip

除了 screen 入參選擇對應界面,nvl 入參選擇 NVL模式菜單,其他傳入菜單的入參會應用在界面上。 傳給菜單選項的入參會應用在菜單界面的所有元素。 還有一個特殊關鍵字 _mode ,設置互動模式,預設值為“menu”。選項的入參會成為對應元素的入參,並傳給菜單界面。

詳見 選項界面 和 config.menu_arguments_callback。

返回頂部

© Copyright 2012-2021, Tom Rothamel.
Created using Sphinx 1.7.6.