協程及非同步載入資源場景
同步載入:在主執行緒中進行載入
非同步載入:單獨開闢一個載入的執行緒用來載入資源,不影響主執行緒的進行
協程
協程是在主執行緒執行的同時開啟另一段邏輯處理,來協同當前程式的執行
協程與多執行緒的區別
Unity中雖然可以開啟執行緒但是不能直接呼叫Unity中大部分的Api,協程可以代替執行緒,但協程不是多執行緒,只是在模擬多執行緒。
在多處理器下,從概念上來講,多執行緒程式同時執行多個執行緒,而在任意時刻只有一個協程在執行
協程的開啟
StartCoroutine(“協程函式名”,引數);
StartCoroutine(函式(引數));
協程函式的定義
返回值必須是IEnumerator介面型別的;
程式必須有yield return ;
協程中可以有引數;
協程函式執行先執行yield return之前的程式碼,之後跳轉出該程式,直到等待條件滿足,再跳轉回來執行yield return之後的程式碼。
private IEnumerator Test()
{
yield return 等待條件;
Print(“等待時間結束”);
}
協程函式中yield return 後跟的是等待條件
yield return null 等待一幀;
yield return WaitForSeconds(時間) 等待秒數;
yield break 直接跳出協程;
yield return 物件 等待某個物件完成某種操作,如載入資源,場景
資源
資源的同步載入
Resources.Load<型別>(“相對路徑”);
使用Resources.Load進行載入的時候如果載入的資源過大,因為在同一執行緒內進行載入,所以在載入沒完成之前不會進行以後的程式碼。所以程式會直接卡住。
資源的非同步載入
Resources.LoadAsync<型別>(“相對路徑”);
配合協程可以進行非同步載入資源
IEnumerator LoadResources()
{
ResourceRequest rr = Resources.LoadAsync("");
yield return rr;
}
該程式可以非同步載入資源,ResourceRequest引數中是資源載入過程中的資訊,例如載入是否完成
場景
場景的同步載入
SceneManager.LoadScene(“場景名”);
SceneManager.LoadScene(場景索引);
如果要載入的場景太大的話,程式會卡頓,在玩的遊戲中載入場景時會有一個載入場景進度條,如果在同一程式中載入場景就不能顯示載入進度。所以要用非同步載入。
場景的非同步載入
AsyncOperation 載入過程中的一些引數。
allowSceneActivation:場景載入完是否要直接跳轉。
isDone:載入完場景並且啟用才設定為true
progress:這個是載入進度,利用這個就可以實現進度條。當allowSceneActivation為true 時進度最高位1;當allowSceneActivation為false時進度最高就到0.9,或許是因為沒有啟用總差一點把
非同步載入的實現
相關文章
- AssetBoundle載入非預設資源
- unity入門—資源匯入與場景建立Unity
- 對執行緒、協程和同步非同步、阻塞非阻塞的理解執行緒非同步
- setState同步非同步場景非同步
- 非同步與協程非同步
- C#如何載入嵌入到資源的非託管dllC#
- Cocos Creator 資源載入流程剖析【六】——場景切換流程
- HBase寫吞吐場景資源消耗量化分析及優化優化
- HBase 寫吞吐場景資源消耗量化分析及優化優化
- AI入門課程資源AI
- 11、協程和io教程01 -- 併發 並行 同步 非同步 阻塞 非阻塞 以及 IO多路複用並行非同步
- TS_0001:同步載入資料
- 圖資料庫及應用場景資料庫
- python之IO併發-阻塞IO 非阻塞IO IO多路複用 非同步IO(協程)Python非同步
- Python非同步協程(asyncio詳解)Python非同步
- 同步協程的必備工具: WaitGroupAI
- 非同步爬蟲之理解協程非同步爬蟲
- 爬蟲之多工非同步協程爬蟲非同步
- JVM之類載入器、載入過程及雙親委派機制JVM
- 非扁平網路場景下,基於開源istio治理CCE多叢集
- Redis系列-資料型別及使用場景Redis資料型別
- HTAP資料庫及應用場景分析資料庫
- redis資料型別及應用場景Redis資料型別
- Unity大密度建築場景載入解決方案Unity
- golang: 用協程非同步寫日誌Golang非同步
- 【python】非同步IO | 協程 | asyncio | await | yieldPython非同步AI
- golang 多協程的同步方法總結Golang
- (課程學習)Android必學-非同步載入 —— 監聽 ListViewAndroid非同步View
- echarts非同步載入Echarts非同步
- 資源混淆是如何影響到Kotlin協程的Kotlin
- 複雜「場景」資料匯入匯出
- 學習下ECharts 非同步載入資料Echarts非同步
- Redis的資料結構及應用場景Redis資料結構
- Android 資源載入機制剖析Android
- 基於echarts非同步載入資料之多個series載入例項Echarts非同步
- Android Kotlin協程入門AndroidKotlin
- Kotlin協程快速入門Kotlin
- 前端非同步的使用場景有哪些?前端非同步