Closed ChaosVan closed 3 months ago
以前SimpleCommand有同样的问题,所以SimpleCommand构造函数有一个参数keepStrongRef可以确保是强引用类型,Command中的Action是一个lua对象是正常的。但是你这里的Target,应该是一个视图界面上的对象(UGUI控件、Window或者View对象),如果视图界面存在,就不应该被释放,如果视图不存在了,那么就应该正常解除绑定了。你查查你这绑定的这个target是不是生命周期没管理好,它应该与你的视图是一致的。另外一般来说也不应该是一个lua对象啊
target是Lua那边的一个View对象,也就是下面绑定代码中的self,gameAlertAsyncInteractionAction是一个AsyncLoadableInteractionActionBase
bindingSet:Bind(self):For("gameAlertAsyncInteractionAction"):To("testAsyncInteractionRequest")
另外,如果我将InteractionAction和InteractionRequest都换成同步的,将UIPrefab放在Resources中,就不会出现target为空的情况(关于这点我还在继续测试),我再多尝试几种绑定方式看看。
好像破案了...Bind的时候,不加那个self就好了,CreateBindingSet的时候创建的LuaBindingSet里的target是C#的对象
bindingSet:Bind():For("gameAlertAsyncInteractionAction"):To("testAsyncInteractionRequest")
感谢大神解惑~
好的,解决了就好,有问题在QQ群里面问我吧,沟通起来比较快! 622321589
TargetProxyBase中的target是一个WeakReference,target是LuaTable的时候,有时会意外变成null。业务那边是将一个View中异步的InteractionAction和VM中异步的InteractionRequest做绑定
请大神帮忙看看问题~感谢