本帖最后由 guoxiaomi 于 2022-6-9 17:54 编辑 我也做了个benchmark:https://godbolt.org/z/93d6q8f14。 意料之中,带缓存的end_with?是最快的,但是xp里没有这个函数,要等到va才有,那么include?就最快。 猜测其他算法相对来说慢的原因: 1. split要创建字符串数组 2. 正则表达式会修改全局变量 3. 下标会创建截取部分的字符串 @RPGzh500223 |
本帖最后由 RPGzh500223 于 2022-6-3 22:33 编辑 图片是关于本贴中一些方法的效率测试 除非方法在整个游戏中只调用一次,我更习惯把重复的部分“固定下来” RUBY 代码复制
|
temp.png (41.3 KB, 下载次数: 22)
灯笼菜刀王 发表于 2022-5-31 09:43 还有大神你这三行代码直接用会报错,貌似这个第二行有个方法没有被定义,惨不忍睹 |
本帖最后由 taeckle 于 2022-6-3 04:16 编辑 这是我自己的方法: 1. 在main上面增加这段代码: RUBY 代码复制
2.在 class Game_Party里面增加一个方法:
3. 调用这个方法: p $game_party.item_des_number("药品") |
还有大神那个.each{|a,b| n += b 中的a逗号b是神马意思啊?我猜b是每个被标记为药品的数量,a就猜不出是啥意思了。。 |
taeckle 发表于 2022-6-2 07:06 https://blog.csdn.net/weixin_30835933/article/details/95456720 |
灯笼菜刀王 发表于 2022-5-31 09:43 大神请问下为什么我在那个class Game_Party里面没有找到这个instance_variable_get方法呢? |
本帖最后由 RPGzh500223 于 2022-6-3 22:15 编辑
考虑到游戏物品越来越多,还是第一个思路好点 楼主有兴趣的话,可以试试图片上的测试 |
temp.jpg (46.97 KB, 下载次数: 20)
n = 0 $game_party.instance_variable_get(:@items).each{|a,b| n += b if $game_items[a].description.split(/@/)[1] == "药品"} return n |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-28 10:27
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.