Project1

标题: 请问如何在方法的名称上决定好里面会使用的数据 [打印本页]

作者: jianyulei    时间: 2017-12-11 15:44
标题: 请问如何在方法的名称上决定好里面会使用的数据
本帖最后由 jianyulei 于 2017-12-11 15:45 编辑

例如脚本里面显示动画的方法:
RUBY 代码复制
  1. def command_337
  2.     iterate_enemy_index(@params[0]) do |enemy|
  3.       enemy.animation_id = @params[1] if enemy.alive?
  4.     end
  5.   end

如果我要在脚本里调用这个方法的话需要写入  
@params[0]=0;@params[1]=2;command_337;
总觉得这样没有扩张性,请问可不可以在方法的名称上就决定好里面会使用的数据,然后根据这些数据来运行?就像写成 command_337[1,0,2] 这种格式就能直接用1 0 2这些数据来执行的感觉


作者: 喵呜喵5    时间: 2017-12-11 21:04
未详细测试:

  1. class Game_Interpreter
  2.   alias m5_20171211_method_missing method_missing
  3.   def method_missing(m,*arg)
  4.     return m5_20171211_method_missing(m,*arg) unless m.match(/^m5com_(.*)/)
  5.     return ->(*arr){ @params = arr; send("command_#{$1}") }
  6.   end
  7. end
复制代码


插入脚本,然后

  1. m5com_337[1,0,2]
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1