设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2549|回复: 9
打印 上一主题 下一主题

[已经解决] 关于for的脚本优化请教

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4007
在线时间
604 小时
注册时间
2017-4-21
帖子
229
跳转到指定楼层
1
发表于 2018-5-1 16:37:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 阮声悠悠 于 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)

Lv5.捕梦者

梦石
0
星屑
36462
在线时间
10800 小时
注册时间
2009-3-15
帖子
4815
2
发表于 2018-5-1 16:40:06 | 只看该作者
可啪!
3千多角色@!
流石大神!

评分

参与人数 1星屑 -1 收起 理由
RyanBern -1 尽量给出能解决楼主提问的回复.

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
3
发表于 2018-5-1 16:58:07 | 只看该作者
咱以为咱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-2 12:07
SOGA, 那就不用多此一举, 直接整个数组清除就好了  发表于 2018-5-1 19:09
attr_reader 的含义是不能写 $game_party.actors = 这样的东西,但是 $game_party.actors.clear 是可以写的。  发表于 2018-5-1 18:43

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
阮声悠悠 + 1 给你点赞,可惜只能+1

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4007
在线时间
604 小时
注册时间
2017-4-21
帖子
229
4
 楼主| 发表于 2018-5-1 17:12:53 | 只看该作者
灯笼菜刀王 发表于 2018-5-1 16:58
咱以为咱350个角色已经够多了, 算你狠.....

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

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

其实没3000多
一共900+
为了方便整理一些不同的形态,索性扩大到了3000
啊哈哈哈哈
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42448
在线时间
7603 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

5
发表于 2018-5-2 14:34:31 | 只看该作者
直接修改$game_party的@actors为只有主角的数组就可以了
比较简单的方法就是添加点代码
  1. class Game_Party
  2.   def test
  3.     @actors = [$game_actors[主角ID]]
  4.   end
  5. end
复制代码


然后调用$game_party.test就可以
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33489
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

6
发表于 2018-5-2 20:36:10 | 只看该作者
  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)}
复制代码

点评

卧槽,大神大神!!看不懂,学习了!!  发表于 2018-5-2 21:26

评分

参与人数 1+1 收起 理由
阮声悠悠 + 1 为你点赞

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-27 18:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表