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

Project1

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

[有事请教] [已解决]从自定义的子菜单返回时如何固定光标位置

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
245 小时
注册时间
2016-2-3
帖子
178

开拓者

跳转到指定楼层
1
发表于 2024-10-6 13:07:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 饿啊 于 2024-10-10 11:49 编辑

闲来无事搓了如下的“更多功能”子菜单小脚本:

RUBY 代码复制
  1. class Window_ExtraMenuCommand < Window_MenuCommand #"更多功能"子菜单
  2.   def make_command_list
  3.     add_command("任务/书籍",:book,true)
  4.     add_command("自主合成",:itemsynthesis,$game_system.i_rcp_sw.size > 0)
  5.     unless TMMEDAL::HIDE_COMMAND && !medal_enabled
  6.       add_command(TMMEDAL::COMMAND_MEDAL, :medal, medal_enabled)
  7.     end
  8.     add_command("返回上级",:originmenu,true)
  9.   end
  10. end
  11. #==============================================================================
  12. #“更多功能”窗口的Scene_ExtraMenu扩展
  13. #==============================================================================
  14. class Scene_ExtraMenu < Scene_Menu
  15.   #--------------------------------------------------------------------------
  16.   # ● 菜单条目生成
  17.   #--------------------------------------------------------------------------
  18.   def create_command_window
  19.     @command_window = Window_ExtraMenuCommand.new
  20.     @command_window.set_handler(:medal, method(:command_medal))
  21.     @command_window.set_handler(:book, method(:command_book))
  22.     @command_window.set_handler(:itemsynthesis, method(:command_itemsynthesis))
  23.     @command_window.set_handler(:originmenu, method(:return_scene))
  24.     @command_window.set_handler(:cancel,    method(:return_scene))
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # 窗口调用
  28.   #--------------------------------------------------------------------------
  29.   def command_medal
  30.     SceneManager.call(Scene_Medal)
  31.   end
  32.  
  33.   def command_book
  34.     SceneManager.call(Scene_Book)
  35.   end
  36.  
  37.   def command_itemsynthesis
  38.     SceneManager.call(Scene_ItemSynthesis)
  39.   end
  40. end

随后在Scene_Menu中做了如下处理,以使得能在主菜单中出现“更多功能”的选项
代码复制
  1. @command_window.set_handler(:moreoptions, method(:command_moreoptions)) #位于"生成指令窗口"处
  2. def command_moreoptions
  3.     #@command_window.dispose
  4.     #@command_window = Window_ExtraMenuCommand.new
  5.     SceneManager.call(Scene_ExtraMenu)
  6.   end  #新增于各种指令处


运行虽然比较完美,但有一个小问题:如果直接按ESC还好,但只要我在子菜单中对任意选项进行“确认”操作后,返回主菜单时光标都会停在最上面一条。我想把光标固定在主菜单的“更多功能”上,请问我该如何进一步改写?

究极半吊子
《重生学校》同人作:https://rpg.blue/thread-493882-1-1.html

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2024-10-8 13:51:22 | 只看该作者
打开菜单时的选项位置是 Window_MenuCommand 的 @@last_command_symbol 在控制的,你的 “子菜单中对任意选项进行“确认”操作” 是不是改了这个?

点评

出了些误会;前者的"“没有改过”是指我没有对默认脚本中该变量及"process_ok"方法体进行过更改;而后者的"会改"是指该变量在process_ok方法体中改变   发表于 2024-10-9 15:55
不是哥们,“没有改过”,“按下确定时会改”,你这两句话不是前后矛盾吗……  发表于 2024-10-9 13:49
目前在尝试在生成extramenu窗口的初始化阶段记录下该变量的位置,然后重写return_scene方法把记下的位置再赋值回去,但是似乎失败了。  发表于 2024-10-9 10:22
没有改过。实际上我已经注意到了如此差错的原因——在该类的"process_ok"的方法中处理按下确定相关的操作,会将该变量变为当前选项。  发表于 2024-10-9 10:19
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 2024-10-9 13:53:03 | 只看该作者
你自己内部界面里的选项窗口,不要作为 Window_MenuCommand 的子类,而是直接作为 Window_Command 的子类就没这问题了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
245 小时
注册时间
2016-2-3
帖子
178

开拓者

4
 楼主| 发表于 2024-10-10 11:18:53 | 只看该作者
本帖最后由 饿啊 于 2024-10-10 11:45 编辑

感谢提点,另对父类修改后还需要对一楼中脚本主体的第19行做出如下改动:
代码复制
  1. @command_window = Window_ExtraMenuCommand.new(0,0)

以及如果有后来的兄弟想引入这个脚本,还是用如下的改良版好些,(请务必配合一楼中对于Scene_Manager的改动)起码不会报错:
RUBY 代码复制
  1. #=================================================================
  2. #"更多功能"子菜单
  3. #=================================================================
  4. class Window_ExtraMenuCommand < Window_Command
  5.   def make_command_list
  6. #~     add_command("任务/书籍",:book,true)
  7. #~     add_command("自主合成",:itemsynthesis,$game_system.i_rcp_sw.size > 0)
  8. #~     unless TMMEDAL::HIDE_COMMAND && !medal_enabled
  9. #~       add_command(TMMEDAL::COMMAND_MEDAL, :medal, medal_enabled)
  10. #~     end
  11.     add_command("返回上级",:originmenu,true)
  12.     #此处仅保留"返回上级",以适配其他工程
  13.   end
  14. end
  15. #==============================================================================
  16. #MenuCommand扩展
  17. #==============================================================================
  18. class Window_MenuCommand
  19.   alias saren_extramenu_add_original_commands add_original_commands
  20.   def add_original_commands
  21.     saren_extramenu_add_original_commands
  22.     add_command("更多功能",:moreoptions,true)
  23.   end
  24. end
  25.  
  26. #==============================================================================
  27. #“更多功能”窗口的Scene_ExtraMenu扩展
  28. #==============================================================================
  29. class Scene_ExtraMenu < Scene_Menu
  30.  
  31.   #--------------------------------------------------------------------------
  32.   # ● 菜单条目生成
  33.   #--------------------------------------------------------------------------
  34.   def create_command_window
  35.     @command_window = Window_ExtraMenuCommand.new(0,0)
  36. #~     @command_window.set_handler(:medal, method(:command_medal))
  37. #~     @command_window.set_handler(:book, method(:command_book))
  38. #~     @command_window.set_handler(:itemsynthesis, method(:command_itemsynthesis))
  39.     @command_window.set_handler(:originmenu, method(:return_scene))
  40.     @command_window.set_handler(:cancel,    method(:return_scene))
  41.     #此处仅保留"返回上级",以适配其他工程
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # 窗口调用
  45.   #--------------------------------------------------------------------------
  46. #~   def command_medal
  47. #~     SceneManager.call(Scene_Medal)
  48. #~   end
  49.  
  50. end

如果还有其他使用上的疑问,烦请告知我。
究极半吊子
《重生学校》同人作:https://rpg.blue/thread-493882-1-1.html
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 23:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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