Project1
标题:
请问actor类中经验的1个问题
[打印本页]
作者:
kvkv97
时间:
2023-12-14 21:28
标题:
请问actor类中经验的1个问题
本帖最后由 kvkv97 于 2023-12-21 21:31 编辑
在actor类中
#--------------------------------------------------------------------------
# ● 更改等级
# level : 新的等级
#--------------------------------------------------------------------------
def level=(level)
# 检查上下限
level = [[level, $data_actors[@actor_id].final_level].min, 1].max
# 更改 EXP
self.exp = @exp_list[level]
end
在地图上建一个事件,设定加等级10,然后注释掉 self.exp = @exp_list[level],然后
在解释器中的command_316
#--------------------------------------------------------------------------
# ● 增减等级
#--------------------------------------------------------------------------
def command_316
# 获取操作值
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 处理重复
iterate_actor(@parameters[0]) do |actor|
# 更改角色的等级
actor.level += value
p actor.level
end
# 继续
return true
end
p actor.level为什么值是1而不是11(注释掉self.exp = @exp_list[level])?
作者:
srwjrevenger
时间:
2023-12-30 11:40
等级变化跟self.exp有关啊,
你把它注释掉会有什么后果?
看看升级和self.exp相关的地方吧。
解决问题不要老是盯着一个地方,
多看看,多找找相关脚本的具体内容和调用的地方。
作者:
939034448
时间:
2023-12-30 14:37
是这样,actor类的level方法每次调用会通过exp列表来更新等级,虽然你设定了等级加10,但是由于你这个self.exp=@exp_list[level]注释掉了,导致你的经验没有更新,它的过程大概是这样,当你使用actor.level这个方法,其内部会先验证一下经验在经验列表中的位置,然后返回level的值,你也许将level理解成actor的属性了,实际上是actor的方法,你之所以可以通过actor.level来获得等级是因为这个方法定义的时候给了返回值,这个返回值就是通过计算exp在exp列表里的位置后得出的等级,你注释了更新经验的操作所以你再用actor.level方法返回的等级只会是你当前经验值对应的等级
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1