我正在尝试在Unity中引用另一个脚本。这些脚本之一(API.cs)向服务器发送Post请求,而另一个脚本(Main.cs)试图运行其Post()方法。
但是,我在Unity调试器中看到以下错误消息:
只能从主线程调用IsObjectMonoBehaviour。
构造器和字段初始化器将在加载场景时从加载线程执行。
请勿在构造函数或字段初始化程序中使用此函数,而应将初始化代码移至Awake或Start函数。
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
API:Post(MonoBehaviour)(位于Assets / Scripts / API.cs:7)
Main:m__0()(位于Assets / Scripts / Main.cs:13)
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()
我认为此错误与从StartCoroutine()方法中调用非静态方法PostRequest()有关。但是,我无法将IEnumerator设为“公共静态”。
这是我在C#和Unity中都从事过的第一个项目,在这里我有点茫然...
非常感谢您的投入!
Main.cs
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
public class Main : MonoBehaviour {
void Start() {
Task one = Task.Run(() => {
API api = new API();
api.Post(this);
});
one.Wait(-1);
}
}
API.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API {
public void Post(MonoBehaviour instance) {
instance.StartCoroutine(PostRequest());
}
IEnumerator PostRequest() {
...
}
}