结合starfore_ILruntime这个项目能具体分析为什么吗
时间: 2024-03-29 20:37:47 浏览: 50
starcore_for_flutter:扑打其他脚本语言的中间件
结合StarForce_ILRuntime项目,我可以更准确地回答你的问题。
在这个项目中,`RuntimeProcedure`是一个用于管理游戏流程的类,其`ChangeProcedure`方法用于切换流程。在调用`ChangeProcedure`方法时,需要传入一个`ProcedureBase`类型的参数,用于指定要切换到的流程。而`HotProcedureChangeScene`是`ProcedureChangeScene`的子类,其主要功能是支持热更新场景。
在使用ILRuntime进行热更新时,需要使用反射来调用热更后的代码。由于ILRuntime的反射性能较低,因此需要对一些常用的方法进行缓存,以提高反射调用的效率。在StarForce_ILRuntime项目中,使用了一个名为`ReflectionHelper`的静态类来进行反射调用缓存。而在`ReflectionHelper`中,就使用到了类似于`RuntimeProcedure.ChangeProcedure<HotProcedureChangeScene>(procedureOwner)`这样的泛型方法,用于缓存常用的反射调用。
因此,`RuntimeProcedure.ChangeProcedure<HotProcedureChangeScene>(procedureOwner)`这样的调用方式,是为了在使用ILRuntime进行热更新时,提高反射调用效率而设计的。而`HotProcedureChangeScene`作为`ProcedureChangeScene`的子类,只是为了实现更多的特殊功能而存在。
阅读全文