赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 4 |
经验 | 0 |
最后登录 | 2025-6-1 |
在线时间 | 28 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 446
- 在线时间
- 28 小时
- 注册时间
- 2021-6-30
- 帖子
- 2
|
这个我应该能试试回答,拿RPG MAKER XP的Game_swithes类举例
- #==============================================================================
- # ■ Game_Switches
- #------------------------------------------------------------------------------
- # 处理开关的类。编入的是类 Array 的外壳。本类的实例请参考
- # $game_switches。
- #==============================================================================
- class Game_Switches
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- @data = []
- end
- #--------------------------------------------------------------------------
- # ● 获取开关
- # switch_id : 开关 ID
- #--------------------------------------------------------------------------
- def [](switch_id)
- if switch_id <= 5000 and @data[switch_id] != nil
- return @data[switch_id]
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ● 设置开关
- # switch_id : 开关 ID
- # value : ON (true) / OFF (false)
- #--------------------------------------------------------------------------
- def []=(switch_id, value)
- if switch_id <= 5000
- @data[switch_id] = value
- end
- end
- end
复制代码
可以看到这段类中定义了一个初始化,一个获取,一个赋值
初始化就是所问的@data = [] ,至于后面怎么赋值的则用到了[]=(switch_id, value)这个方法
由于Ruby是动态数组,不用预分配数组大小,只需要生成一个数组容器就行,可以指定数组位置直接进行赋值
用到的赋值例如Game_Character 2里面行动时的开关变化:
- case command.code
- when 27 # 开关 ON
- $game_switches[command.parameters[0]] = true
- $game_map.need_refresh = true
- when 28 # 开关 OFF
- $game_switches[command.parameters[0]] = false
- $game_map.need_refresh = true
复制代码
或者是Interpreter类里面关于开关变化的方法,这里不赘述了
↑能力有限,只能指出是这么回事和为什么可行,不能说明$game_switches在这些变化中的具体原因和作用 |
|