Project1

标题: $game_actors这个是数组么?如果我想取$game_actors都有多少个角色该如何做? [打印本页]

作者: zhangmdk    时间: 2012-10-8 19:23
标题: $game_actors这个是数组么?如果我想取$game_actors都有多少个角色该如何做?
$game_actors.size和$game_actors.length都不行啊……

我想取现在所有设定的角色的个数。
例如 $actor_fighted=Array.new($game_actors.length)
作者: 怪蜀黍    时间: 2012-10-8 21:00
  1. p $data_actors.size - 1
复制代码
因为数组第0个元素是nil,所以要减1。
$game_actors是以个自定义的类,该类的名称就叫Game_Actors。
作者: zhangmdk    时间: 2012-10-8 21:31
protosssonny 发表于 2012-10-8 21:00
因为数组第0个元素是nil,所以要减1。
$game_actors是以个自定义的类,该类的名称就叫Game_Actors ...

好像不是这个问题,我用p $game_actors,显示是nil

我这段是写在一个类的初始化当中的,是不是不应该放在这里?

我的目的是给$game_actors里每个项目多做一个记号来记录角色战斗了几次。就想根据$game_actors的长度建立一个新数组,然后在这个数组用id来定位。
作者: zhangmdk    时间: 2012-10-8 21:43
  1.   def draw_item(index)
  2.     rect = item_rect(index)
  3.     self.contents.clear_rect(rect)
  4.     actor = @data[index]
  5.    
  6.     if $actor_fighted == nil
  7.       #以ACTORS数组大小生成新数组
  8.       p $game_actors
  9.       
  10.       #自行计算ACTOR长度
  11.   #~     actors_size = 0
  12.   #~     for i in $game_actors
  13.   #~       actors_size += 1
  14.   #~     end
  15.       
  16.       $actor_fighted=Array.new($game_actors.size)#(actors_size)#
  17.       #将新数组内容均置为0
  18.       for i in $actor_fighted
  19.         i=0
  20.       end
  21.     end
  22.       
  23.     if actor != nil
  24.       if TSRPG::MAP_ACTOR_FORCED[@map_id] != nil and
  25.           TSRPG::MAP_ACTOR_FORCED[@map_id].include?(actor.id)
  26.         self.contents.font.color = knockout_color
  27.         self.contents.draw_text(rect, actor.name + "(强制战斗)")
  28.       elsif TSRPG::MAP_ACTOR_STOP[@map_id] != nil and
  29.           TSRPG::MAP_ACTOR_STOP[@map_id].include?(actor.id)
  30.         self.contents.font.color = crisis_color
  31.         self.contents.draw_text(rect, actor.name + "(禁止战斗)")
  32.       elsif $game_actors[actor.id].hp <= 0
  33.         self.contents.font.color = knockout_color
  34.         self.contents.draw_text(rect, actor.name + "(昏迷 OTL)")
  35.         
  36.       elsif $actor_fighted[actor.id] != 0       #出战一次后休息
  37.         self.contents.font.color = crisis_color
  38.         self.contents.draw_text(rect, actor.name + "(战累了要休息)")
  39.         
  40.       else
  41.         self.contents.font.color = normal_color
  42.         self.contents.font.color.alpha = selected?(index) ? 255 : 128

  43.         self.contents.draw_text(rect, "#{actor.name}(#{$game_actors[actor.id].hp}/#{$game_actors[actor.id].maxhp})")
  44.       end
  45.     end
  46.   end
复制代码
@protosssonny  

我把代码写到这个类的方法里面,然后p $game_actors有显示了,不过$game_actors.size还是不行,显示未定义size

错误信息:
NoMethodError occurred
undefined method 'size' for #<Game_Actors:0x2b4a860>


作者: 怪蜀黍    时间: 2012-10-8 21:46
zhangmdk 发表于 2012-10-8 21:43
@protosssonny  

我把代码写到这个类的方法里面,然后p $game_actors有显示了,不过$game_actors.size还是 ...

刚才已经说了,$game_actors是以个自定义的类,该类的名称就叫Game_Actors。
p $data_actors.size - 1 才能算出角色的数量。





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