查看: 2149|回复: 3

[已经过期] 如何创建一个新的功能,并可以用到菜单的选项中呢?

[复制链接]
梦石
0
星屑
50
在线时间
15 小时
注册时间
2009-6-2
回帖
9
发表于 2015-10-8 08:08:36 | 显示全部楼层 |阅读模式

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

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

×
例如,
功能作用:
功能=任务系统

命名为A:
任务系统=A

但是选项中的任务系统怎么关联这个任务系统呢?

点评

参考默认的菜单处理  发表于 2015-10-8 13:01
英俊的职业玩家

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-10-8 08:24:08 | 显示全部楼层
如果你这个新功能只是非常简单,用公共事件就能做出来的功能的话:
https://rpg.blue/home.php?mod=sp ... o=blog&id=14031
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10450
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2015-10-8 13:21:46 | 显示全部楼层
你也可以看看这里https://rpg.blue/thread-371698-1-1.html
回复

使用道具 举报

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-10-8 13:41:56 | 显示全部楼层
本帖最后由 墨凌羽 于 2015-10-8 08:37 编辑

rm制作选单大概分两部分,选单添加和事件绑定。
选单添加大概是这样(具体的可以通读Window_Command这个类)
#示例代码
add_command(Vocab::item,   :item,   main_commands_enabled)
#方法和参数说明
#     add_command(name, symbol, enabled = true, ext = nil)
#     name    : 指令名称
#     symbol  : 对应的符号
#     enabled : 有效状态的标志
#     ext     : 任意的扩展数据

而事件绑定大概如下
#示例代码
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item,      method(:command_item))
#方法和参数说明
#     set_handler(symbol, method)
#     symbol : 要绑定的选单的symbol值
#     method : 设置的处理方法 (Method 实例)

先是实例化一个window对象,然后调用set_handler来进行事件绑定。第一个参数要和前边add_command里的第二个参数对应,第二个参数是一个Method对象(这个具体可以参考这里)
选单添加一般是写在相应window类内部的
事件绑定则是在和该对象实例化的同一个地方
比如你打算给菜单界面左部添加选单,就先得在Window_MenuCommand类进行选单添加(具体的是写在该类的make_command_list方法里),然后在Scene_Menu里进行事件绑定(具体在该类的create_command_window方法里)。
代码示例(给菜单场景添加一个名为‘笔记’的选单,效果是会跳转到名为Note的场景)
[pre lang="ruby"]#Window_MenuCommand类 选单添加
class Window_MenuCommand < Window_Command
  alias :old_make_command_list :make_command_list
  #注意,一般为了脚本兼容,不会直接写old_XXX这样的,最好是以脚本作者的名字加日期的格
  #式如shitke_151008_make_command_list。alias具体可以参考F1中‘类定义与方法定义’部分
  def make_command_list
    old_make_command_list
    add_command("笔记", :note, main_commands_enabled)
  end
end
#Scene_Menu类 事件绑定
class Scene_Menu < Scene_MenuBase
  #这里没有同上边一样使用alias,主要是想更清晰的展示‘对象实例化——事件绑定’这一过程
  def create_command_window
    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill,     method(:command_personal))
    @command_window.set_handler(:equip,     method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
    #对窗口对象Window_MenuCommand的实例command_window里的note选单进行事件绑定
    @command_window.set_handler(:note,    method(:command_note))
  end
  #选单note按下键C(这个C指RMIuput模块的:c,具体包括键盘上的Space, Enter, Z三个按键)
  #时执行的具体事件
  def command_note
    SceneManager.call(Scene_Note) #直接跳转到笔记场景
  end
end[/pre]
P.S要想搞清楚这些最好还是去熟悉Window类(看F1)以及通读Window_Base、Window_Selectable、Window_Command这三个类。把这些搞清楚那么在RM里创建窗口亦或是选单都毫无问题和难度。
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部