总的来说,我对 unity3d 和 C# 还很陌生。目前,我正在尝试使用 AndroidJavaClass.CallStatic 方法来调用调用另一个应用程序的 Java 方法。完成调用该方法后,将调用回调函数并触发 Web 请求。但是,当我尝试触发 Web 请求时,我收到一条错误信息
UnityException: IsObjectMonoBehaviour can only be called from the main thread
。我知道这是因为这个方法是在startCoroutine中调用的,但我想知道为什么它不是从主线程调用的,因为入口点是一个onclick函数。关于如何解决这个问题的任何想法?提前致谢。
这是我的代码片段
void Onclick()
{
#if UNITY_ANDROID
SomeClass.Dosomething(param1,callback);
#endif
}
void callback()
{
....
StartCoroutine(webrequest);
}
public static void DoSomething(String param1, Callback callback)
{
using (var kclass = new AndroidJavaClass(packageName))
{
kclass.CallStatic("MethodName", Param1, callback);
}
}
我试图找到如何在回调中触发网络请求
编辑:
我发现那是因为Unity不支持多线程。我通过在某些
Gameobject
中启动并发队列并在调用回调时将请求放入并发队列来解决这个问题。并在 Gameobject 的 Webrequest
函数中发送 Update
(启动协程)以确保它是从 Unity 主线程调用的