为什么重写虚拟方法,而只调用基方法而不执行任何其他操作,会导致程序的运行方式发生变化?
例如:
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
base.OnDeserialize(reader, initialState);
}
重写:
public virtual void OnDeserialize ( NetworkReader reader, bool initialState );
导致不同的结果。
就我而言,一个名为UNET的网络图书馆不起作用。
您可以在此处查看最小化的测试用例,其中包括日志。
如果按预期使用覆盖,则不应发生函数更改,但是函数更改仍然很容易实现。
库可以使用反射来确定类是否覆盖了函数,并根据该检查更改其操作。
在这种情况下,这似乎是 Unity 的错误。 我认为它会检查是否需要调用一种方法作为优化,编写不正确,并导致程序流发生变化。