Project1

标题: 关于for的脚本优化请教 [打印本页]

作者: 阮声悠悠    时间: 2018-5-1 16:37
标题: 关于for的脚本优化请教
本帖最后由 阮声悠悠 于 2018-5-2 12:57 编辑

分了三个脚本执行下面,
目的是让所有角色离队,主角除外
但有的电脑执行这里的时候会直接退出游戏,(玩家反映)
不知道大大们有什么好的优化建议?

  1. for i in 1..998
  2. $game_party.remove_actor(i)
  3. end

  4. for i in 1000..2999
  5. $game_party.remove_actor(i)
  6. end

  7. for i in 3000..3999
  8. $game_party.remove_actor(i)
  9. end
复制代码



啊哈哈哈
我当初为什么不这样写呢
RUBY 代码复制
  1. a = $game_party.actors[1].id
  2. b = $game_party.actors[2].id
  3. c = $game_party.actors[3].id
  4. d = $game_party.actors[4].id
  5. $game_party.remove_actor(a)
  6. $game_party.remove_actor(b)
  7. $game_party.remove_actor(c)
  8. $game_party.remove_actor(d)

作者: soulsaga    时间: 2018-5-1 16:40
可啪!
3千多角色@!
流石大神!
作者: 灯笼菜刀王    时间: 2018-5-1 16:58
咱以为咱350个角色已经够多了, 算你狠.....

game party的 @actors 是attr_reader,  不能外部直接操作的话

那就到game party里新建个方法
def 解散(actor_id)
  @actors.clear
  @actors.push($game_actors[actor_id])
  $game_player.refresh
end

然后, 用 $game_party.解散(主角ID), 就没问题了把.  
作者: 阮声悠悠    时间: 2018-5-1 17:12
灯笼菜刀王 发表于 2018-5-1 16:58
咱以为咱350个角色已经够多了, 算你狠.....

game party的 @actors 是attr_reader,  不能外部直接 ...

又是大神,解决了,为你点赞!!!!

其实没3000多
一共900+
为了方便整理一些不同的形态,索性扩大到了3000
啊哈哈哈哈
作者: fux2    时间: 2018-5-2 14:34
直接修改$game_party的@actors为只有主角的数组就可以了
比较简单的方法就是添加点代码
  1. class Game_Party
  2.   def test
  3.     @actors = [$game_actors[主角ID]]
  4.   end
  5. end
复制代码


然后调用$game_party.test就可以
作者: 芯☆淡茹水    时间: 2018-5-2 20:36
  1. a = $game_party.actors[1].id
  2. b = $game_party.actors[2].id
  3. c = $game_party.actors[3].id
  4. d = $game_party.actors[4].id
  5. $game_party.remove_actor(a)
  6. $game_party.remove_actor(b)
  7. $game_party.remove_actor(c)
  8. $game_party.remove_actor(d)
复制代码


可以直接用范围

  1. (1..4).each{|id| $game_party.remove_actor(id)}
复制代码





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