[原]unity中WWW isDone方法只能在主線程中調用

項目中要使用動態加載,原計劃是生成WWW對象後,放到一個容器裏。由一個獨立線程輪詢容器裏的對象,若是www.isDone爲true時,回調一個接口把結果交給請求方。this

 

new Thread( new ThreadStart( XXX.run ) );

 

運行之後出現下面錯誤:spa

詳細錯誤:線程

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.
code

提示只能在主線程中調用isDone方法對象

 

無奈,原來線程中輪詢的代碼放到MonoBehaviour的派生類中,利用update()方法被循環(每一楨)調用的特色來輪詢容器。blog

update是每一楨調用,這樣的輪詢間隔沒有必要,因此須要在update方法中加一deltaTime的累加,到達須要的步長時再執行業務代碼。updateStep爲0時則不執行延遲調用。接口

 

private updateStep = 0;

void Update(
    if( 0 < updateStep ){
        tm += Time.deltaTime;
        if( tm >= 2 ){
            tm = 0f;
            update();  // Call custom update
        }
    } else {
        update();     // Call custom update
    }
}
相關文章
相關標籤/搜索