您的位置:首页 > 移动开发 > Unity3D

unity中WWW isDone方法只能在主线程中调用

2013-06-26 11:45 239 查看
项目中要使用动态加载,原计划是生成WWW对象后,放到一个容器里。由一个独立线程轮询容器里的对象,如果www.isDone为true时,回调一个接口把结果交给请求方。

new Thread( new ThreadStart( XXX.run ) );
运行以后出现下面问题:



详细错误:

get_isDone  can only be called from the main thread.

Constructors and field initializers will be executed from the loading thread when loading a scene.

Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.

提示说isDone必须在主线程内被调用。

无奈,原来线程中轮训的代码放到MonoBehaviour的派生类中,利用update()方法被循环(每一桢)调用的特点来轮询容器。

update是每一桢调用,这样的轮询间隔没有必要,所以需要在update方法中加一deltaTime的累加,到达需要的步长时再执行业务代码。updateStep为0时则不执行延迟调用。

if( 0 < updateStep ){
tm += Time.deltaTime;
if( tm >= 2 ){
tm = 0f;
// Call custom update
update();
}
} else {
// Call custom update
update();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: