[Unity/C#]MonoBehaviour多继承下的重载函数调用保障
2020/05
14
11:05
public class MonoBehaviourBase : MonoBehaviour
{
private void OnDestroy()
{
// do base destroy...
}
}
public class BattleField: MonoBehaviourBase
{
public void OnDestroy()
{
// do battle destroy
}
}
这种写法,不会有任何警告!!!
但是在执行结果上,基于Unity-Mono体系
系统将只会执行BattleField的OnDestroy,
这样MonoBehaviourBase的OnDestroy不被调用!
会发生不可预期的行为。
改写方法为:
public class MonoBehaviourBase : MonoBehaviour
{
private void OnDestroy()
{
// do base destroy...
this.OnDestroyBase();
}
public virtual void OnDestroyCallback() {}
}
public class BattleField: MonoBehaviourBase
{
public override void OnDestroyCallback()
{
// do battle destroy
}
}
若子类重写了 OnDestroy, 编译器将会警告!
除非有人恶意重写:public new void OnDestory();
达到了代码安全的目的
CopyRights: The Post by BY-NC-SA For Authorization,Original If Not Noted,Reprint Please Indicate From 老刘@开发笔记
Post Link: [Unity/C#]MonoBehaviour多继承下的重载函数调用保障
Post Link: [Unity/C#]MonoBehaviour多继承下的重载函数调用保障