设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2071|回复: 2
打印 上一主题 下一主题

[已经解决] 请问二级菜单的脚本写法。

[复制链接]

Lv2.观梦者

梦石
0
星屑
381
在线时间
238 小时
注册时间
2013-8-20
帖子
496
跳转到指定楼层
1
发表于 2018-3-21 07:51:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
就是打开选项会弹出另一个窗口来选择。
比如:主菜单的选择人物选择后,会弹出状态,装备的选择。
请问这种该怎么写?可以的请求个范例学习学习。
不定期回来6R玩。
下方广告帖,欢迎点击

Lv6.析梦学徒

老鹰

梦石
40
星屑
33412
在线时间
6552 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 2018-3-21 16:18:42 | 只看该作者
本帖最后由 百里_飞柳 于 2018-3-21 16:21 编辑

首先要知道默认的command类窗口,它的指令与对应方法绑定的相关内容
然后完全可以看默认菜单里关于技能、装备的实现
其本质是:
主指令窗口里绑定好了 sym => method ,当按下确定时,调用当前选项的sym(比如技能就是 :skill)所对应的方法,比如( method(:on_skill_ok) ),然后它在父类里会自己调用自己的deactivate(表示该窗口指令成功执行完了,不再接受按键),这样在方法on_skill_ok里把需要下一步激活的窗口activate了(比如@status_window.activate加入方法on_skill_ok中)就变成了当前进行选择输入的是状态窗口

对于你的问题,你可以自己再加一个小的command_window2实例,把激活status_window的地方改成激活它,然后再给它绑定按下确定(激活status_window)、按下取消(激活主command_window)时要调用的方法,就做好了简单的适应键盘的多级菜单

评分

参与人数 1+1 收起 理由
白魔导师宝儿 + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
898
在线时间
421 小时
注册时间
2015-7-5
帖子
131
3
发表于 2018-3-21 22:08:32 | 只看该作者
  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================

  6. class Scene_Menu < Scene_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     menu_index : 命令窗口光标初始位置
  10.   #--------------------------------------------------------------------------
  11.   def initialize(menu_index = 0)
  12.     @menu_index = menu_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 开始处理
  16.   #--------------------------------------------------------------------------
  17.   def start
  18.     super
  19.     create_menu_background
  20.     create_command_window
  21.     create_command_window2  #####################
  22.     @command_window2.visible = false  #####################
  23.     @command_window2.active = false   #####################
  24.     @gold_window = Window_Gold.new(0, 360)
  25.     @status_window = Window_MenuStatus.new(160, 0)
  26.     @command_window2.x = 544-160   #####################
  27.     @command_window2.z = @status_window.z+1   #####################
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 结束处理
  31.   #--------------------------------------------------------------------------
  32.   def terminate
  33.     super
  34.     dispose_menu_background
  35.     @command_window.dispose
  36.     @gold_window.dispose
  37.     @status_window.dispose
  38.     @command_window2.dispose
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 更新画面
  42.   #--------------------------------------------------------------------------
  43.   def update
  44.     super
  45.     update_menu_background
  46.     @command_window.update
  47.     @command_window2.update  #####################
  48.     @gold_window.update
  49.     @status_window.update
  50.     if @command_window.active
  51.       update_command_selection
  52.     elsif @command_window2.active  #####################
  53.        update_command_selection2   #####################
  54.     elsif @status_window.active
  55.       update_actor_selection
  56.     end
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 生成命令窗口
  60.   #--------------------------------------------------------------------------
  61.   def create_command_window
  62.     s0 = "角色"
  63.     s1 = Vocab::item
  64.     s2 = Vocab::save
  65.     s3 = Vocab::game_end
  66.     @command_window = Window_Command.new(160, [s0,s1, s2, s3])
  67.     @command_window.index = @menu_index
  68.     if $game_party.members.size == 0          # 如果队伍为空
  69.       @command_window.draw_item(0, false)     # 无效化物品选项
  70.       @command_window.draw_item(1, false)     # 无效化技能选项
  71.       @command_window.draw_item(2, false)     # 无效化装备选项
  72.       @command_window.draw_item(3, false)     # 无效化状态选项
  73.     end
  74.     if $game_system.save_disabled             # 如果禁止存档
  75.       @command_window.draw_item(4, false)     # 无效化存档选项
  76.     end
  77.   end
  78.   
  79.   
  80.   
  81.   #####################
  82.   def create_command_window2
  83.    
  84.     @command_window2 = Window_Command.new(160,["技能","状态","装备"])
  85.     @command_window2.index = 00
  86.   end  
  87.   def update_command_selection2
  88.     if Input.trigger?(Input::B)
  89.       Sound.play_cancel
  90.       @status_window.active = true
  91.       @command_window2.active = false
  92.       @command_window2.visible = false
  93.     elsif Input.trigger?(Input::C)
  94.       $game_party.last_actor_index = @status_window.index
  95.       case @command_window2.index
  96.         when 0
  97.           $scene = Scene_Skill.new(@status_window.index)
  98.         when 1
  99.           $scene = Scene_Status.new(@status_window.index)
  100.         when 2
  101.           $scene = Scene_Equip.new(@status_window.index)
  102.       end
  103.     end        
  104.   end
  105. #####################


  106.   #--------------------------------------------------------------------------
  107.   # ● 更新命令窗口
  108.   #--------------------------------------------------------------------------
  109.   def update_command_selection
  110.     if Input.trigger?(Input::B)
  111.       Sound.play_cancel
  112.       $scene = Scene_Map.new
  113.     elsif Input.trigger?(Input::C)
  114.       if $game_party.members.size == 0 and @command_window.index < 4
  115.         Sound.play_buzzer
  116.         return
  117.       elsif $game_system.save_disabled and @command_window.index == 4
  118.         Sound.play_buzzer
  119.         return
  120.       end
  121.       
  122. #####################
  123.       Sound.play_decision
  124.       case @command_window.index
  125.       when 0
  126.         start_actor_selection
  127.       when 1      # 物品
  128.         $scene = Scene_Item.new
  129.       when 2    # 存档
  130.         $scene = Scene_File.new(true, false, false)
  131.       when 3      # 结束游戏
  132.         $scene = Scene_End.new
  133.       end
  134.     end
  135. #####################
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 角色选择开始
  139.   #--------------------------------------------------------------------------
  140.   def start_actor_selection
  141.     @command_window.active = false
  142.     @status_window.active = true
  143.     if $game_party.last_actor_index < @status_window.item_max
  144.       @status_window.index = $game_party.last_actor_index
  145.     else
  146.       @status_window.index = 0
  147.     end
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 角色选择结束
  151.   #--------------------------------------------------------------------------
  152.   def end_actor_selection
  153.     @command_window.active = true
  154.     @status_window.active = false
  155.     @status_window.index = -1
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 角色选择更新
  159.   #--------------------------------------------------------------------------
  160.   def update_actor_selection
  161.     if Input.trigger?(Input::B)
  162.       Sound.play_cancel
  163.       end_actor_selection
  164.     elsif Input.trigger?(Input::C)
  165.       Sound.play_decision
  166. #~       case @command_window.index
  167. #~       when 1  # 技能
  168. #~         $scene = Scene_Skill.new(@status_window.index)
  169. #~       when 2  # 装备
  170. #~         $scene = Scene_Equip.new(@status_window.index)
  171. #~       when 3  # 状态
  172. #~         $scene = Scene_Status.new(@status_window.index)
  173. #~       end
  174.      
  175.       @command_window2.y = @status_window.index*96+15   #####################
  176.       @command_window2.active = true   #####################
  177.       @command_window2.visible = true   #####################
  178.       @status_window.active = false    #####################
  179.     end
  180.   end
  181. end
复制代码

参考一下吧,凡是改动的地方都标有###############
并没有太多要改动的。

评分

参与人数 2星屑 +120 +1 收起 理由
正太君 + 120 认可答案
白魔导师宝儿 + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-27 00:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表