记录:首先再拿到工程后测试了下,果然全体时不会消失而单体会消失。估计是因为单体需要召唤选择指针而全体不需要这样子吧
因为对脚本不熟悉,所以把脚本翻了一遍。
发现战斗大图放在picture这个目录下面,于是判断战斗大图是用picture显示的
那么只要找到脚本里显示picture的指令就可以定位脚本了
根据搜索结果定位到了 MOG_Actor_Picture_CM 这个脚本页
MOG_Actor_Picture_CM < Sprite
也就是说,MOG_Actor_Picture_CM 这个是一个精灵的子类
那么移动精灵的方法极有可能是self.y = ??之类的方法
在这里发现了update_slide这个方法,大概是更新精灵滑动的意思
检查了这也脚本并没有在显示技能动画时移开图形的调用,不过找到了更新精灵滑动这个方法就可以找出什么时候使精灵进行滑动了
发现只有在这个精灵内部调用的这个方法
而且是update调用
在update_slide这个内部发现了移出和移入与@cm_visible有关
进一步调查这个变量,在上面的refresh_battler发现对@cm_visible的操作
查找目标改为对refresh_battler的调用
在本脚本的第212行发现对这个方法调用
调用方法的名称是update_cm_picture,就是对全部图形的刷新
在这个方法也有传入参数 cm_visible
查找目标改为对update_cm_picture的调用
在本脚本238行发现对这个方法调用
def update_picture_visible
return if @actor_command_window == nil
cm_visible = can_cm_picture_visible?
cm_id = BattleManager.actor.id rescue -1
@spriteset.update_cm_picture(cm_visible, cm_id)
end
那么, cm_visible 到底还是取决于can_cm_picture_visible?这个方法
目标改为can_cm_picture_visible?
……………………………………
于是找到这个
def can_cm_picture_visible?
return false if (@actor_window.active or @enemy_window.active) rescue return
return false if BattleManager.actor == nil
return true
end
不显示图片满足以下三个条件之一
(@actor_window.active or @enemy_window.active)
BattleManager.actor == nil
通过对这三个变量监视,发现选择单体时@enemy_window.active为true,也就是说,人物移开与这个有关
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |