Project1

标题: 获取有多个事件重叠的地方的事件id [打印本页]

作者: 幼吾幼    时间: 2017-1-20 21:56
标题: 获取有多个事件重叠的地方的事件id
获取有多个事件重叠的地方的事件id时,只能获取其中一个,有没有办法获得同一坐标的其他事件id?
作者: RaidenInfinity    时间: 2017-1-20 22:28
Game_Map 里面的 events_xy(x,y) 方法获取该坐标的所有事件实例。(呼叫法是 $game_map.events_xy(x,y) )

数组里面的是事件实例,那么要获得ID的话要用数组的collect方法来将事件的ID提取出来。

event_ids = $game_map.events_xy(x,y).collect{|event| event.id}
作者: 幼吾幼    时间: 2017-1-25 15:03
RaidenInfinity 发表于 2017-1-20 22:28
Game_Map 里面的 events_xy(x,y) 方法获取该坐标的所有事件实例。(呼叫法是 $game_map.events_xy(x,y) )
...

假如有多个事件重叠,那么以上脚本所判定出的事件id是那个事件的?
单纯判定一个地方的事件的id的话,可以用   $game_map.event_id_xy(x,.y)=……
但是假如有重叠事件,用   $game_map.event_id_xy(x,.y)=…… 只会判定出一个事件id。
不懂,大神求解。
作者: RaidenInfinity    时间: 2017-1-25 15:34
RUBY 代码复制
  1. def event_id_xy(x, y)
  2.         list = events_xy(x, y)
  3.         list.empty? ? 0 : list[0].id
  4. end


event_id_xy的第一行是呼叫events_xy,获得一个装着所有符合坐标的事件对象的数组。
比如这个坐标上有 3号事件,5号事件,11号事件,20号事件重叠着,那么…
在运行了list = events_xy(x, y)之后,
list 所存着的是 [3号事件,5号事件,11号事件,20号事件] 这个数组。

第二行,list.empty? ? 0 : list[0].id 的意思是:

RUBY 代码复制
  1. if list.empty?
  2.    0
  3. else
  4.   list[0].id
  5. end


而我们要知道的是,在Ruby语言,方法会自动将end前面所执行的那一句表达式得出来的值作为返回数据。
所以 如果list是空的,也就是没有事件在这个坐标上,event_id_xy 会返回 0
否则,就返回list的第一个事件的id。

所以上面的那个例子中,event_id_xy返回的会是3。




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