【发布时间】:2016-01-24 00:21:51
【问题描述】:
我有一个名为 StartGame 的脚本,它可以在选择不同的游戏模式时执行不同的操作。 Unity 的 API 和论坛建议使用 OnLevelWasLoaded,但它没有被调用。事实上,当我在 Visual Studio 中将鼠标悬停在它上面时,它会告诉我方法是“StartGame.OnLevelWasLoaded”。我很确定这意味着它没有覆盖该方法。有没有其他人有这个问题?我也在使用 Unity 5.3。
【问题讨论】:
-
能否提供相关代码?
-
Unity 通过反射而不是覆盖来查找方法。工具提示无关紧要——我们确实需要查看代码。
-
确实有很多关于这个问题的线索。这是一个answers.unity3d.com/questions/1112017/…。我们也遇到过这个问题,但只是在编辑器中。 @ 31eee384 附带说明,尽管普遍认为反射用于回调,但事实并非如此。 blogs.unity3d.com/2015/12/23/1k-update-calls
-
@fafase 它仍在反映代码,对吧?只是没有
System.Reflection。不过感谢您的链接——我不知道具体发生了什么,我当然不会再称之为反射了。 -
我猜这是他们自己的内部运作。我不能确定发生了什么,长期以来一直认为这是反射,即使我认为这是反射,因为它看起来像它。似乎更多的是文件读取,搜索特定字符串,然后将方法的内存位置分配给委托集合。有点奇怪,因为它不在智能感知中,所以它不会知道该方法,但是如果您尝试执行错误,它会知道它(更新中的参数)。有点奇怪。