赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
整合之后少了一个函数调用的步骤,所以是有区别的~
用 alias 可能出现这样的情况,比如想在原来的 start_phase5 基础上添加功能:
############## 原 RGSS 脚本 ##############
class Scene_Battle #
def start_phase5 #
# 原来的 start_phase5 #
# ... #
end #
end #
##########################################
############## 插件脚本 1 ################
class Scene_Battle #
alias xrxs26_start_phase5 start_phase5 #
def start_phase5 #
# ... #
xrxs26_start_phase5 #
end #
end #
##########################################
############## 插件脚本 2 ################
class Scene_Battle #
alias xrxs26_start_phase5 start_phase5 #
def start_phase5 #
# ... #
xrxs26_start_phase5 #
end #
end #
##########################################
就会产生 stack level too deep 的异常了——
一开始 xrxs26_start_phase5 复制的是 RGSS 预定义的方法,插件脚本 1 中重新定义 start_phase5,添加新的东西,再执行原来的 start_phase5,至此都没有问题~
接着插件脚本 2 又 alias 了 start_phase5,愿意是想直接沿用旧的 start_phase5,但旧的 start_phase5 已经被插件脚本 2 覆盖为调用 xrxs26_start_phase5,所以在这之后调用 xrxs26_start_phase5 就会再次调用其本身,产生了一个无限循环……
虽然归根究底还是无限递归层次的问题,不过还是多少和 alias 有关系,上面说的不太准确,纠正下~ 系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~ |
|