KeyNotFoundException: Cannot find Delegate Adapter for:TimeManager.OnTimedEvent(Object source, ElapsedEventArgs e), Please add following code:
appdomain.DelegateManager.RegisterMethodDelegate<System.Object, System.Timers.ElapsedEventArgs>();
在Unity项目中ILRuntimeWrapper.cs的void RegistDelegate()函数中添加 下面这段代码
...
public class ILRuntimeWrapper : UnitySingleton<ILRuntimeWrapper>
...
void RegistDelegate()
{
...
appdomain.DelegateManager.RegisterMethodDelegate<System.Object, System.Timers.ElapsedEventArgs>();
...
}
appdomain.DelegateManager.RegisterDelegateConvertor<System.Timers.ElapsedEventHandler>((act) =>
{
return new System.Timers.ElapsedEventHandler((sender, e) =>
{
((Action<System.Object, System.Timers.ElapsedEventArgs>)act)(sender, e);
});
});
...
在热更新ILRuntime中使用参考资料1 的 开始 倒计时的方法 可以实现 每一秒 执行 ,当unity 不执行的时候 循环调用的方法 同样会继续 调用。
在Unity 的逻辑 方法中 执行 开启 计时,记得关闭。
public static void close()
{
if (aTimer != null)
{
//关闭 循环执行
aTimer.AutoReset = false;
//关闭 倒计时
aTimer.Enabled = false;
}//
}//
相关资料:
1.[Unity][FairyGUI][ILRuntime]热更新报错提示添加自动生成代码GList.itemRenderer问题
2.
参考资料:
1.C# 实现 倒计时 (一)
2.
3.
|