遇到一个莫名其妙的bug:
同一个函数里调用加载ab资源的并实例化,但是有的会报实例加载失败,有的调用地方就是没问题的。
问题原因: 实例加载失败的原因是因为调用此函数的地方是在sdk的线程里,而不是在主线程。因为unity的对象或者组件只能在主线程使用。(可能并不是加载失败,个人感觉是加载但是主线程外的线程取不到实例)
解决方案: 将函数封装在此函数内调用。
//等待主线程调用unity函数,因为unity的对象只能在主线程中调用
async UniTaskVoid HandleWaiting(string jsonParamStr)
{
await UniTask.SwitchToMainThread();
dosomething();
Debug.LogError(“Thread.CurrentThread.ManagedThreadId:” + Thread.CurrentThread.ManagedThreadId);
}
为什么unity不让在主线程之外使用自己的对象或者是组件呢,看一下博文
https://blog.csdn.net/Yuan_bowen/article/details/81113386