国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity 之 Addressable可尋址系統(tǒng) -- 將Resources加載資源方式修改為Addressable加載 -- 實戰(zhàn)(一)

這篇具有很好參考價值的文章主要介紹了Unity 之 Addressable可尋址系統(tǒng) -- 將Resources加載資源方式修改為Addressable加載 -- 實戰(zhàn)(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一,兩種資源加載方式對比

  1. 加載方式:

    • Resources 使用同步加載方式;Resources 加載資源時,應(yīng)用程序?qū)蛔枞钡劫Y源加載完成,這可能會導(dǎo)致應(yīng)用程序出現(xiàn)卡頓或掛起的情況。
    • Addressables 使用異步加載方式。這意味著使用 Unity 而使用 Addressables 加載資源時,應(yīng)用程序可以繼續(xù)運(yùn)行,而不會出現(xiàn)卡頓或掛起的情況。
  2. 動態(tài)加載:

    • Resources 只能從項目的 Assets 文件夾中加載資源,只能在編譯時加載資源。
    • Addressables 可以在運(yùn)行時動態(tài)加載資源,從而實現(xiàn)更靈活的資源管理。
  3. 資源管理:

    • Resources 只能帶在安裝包中,資源過多的情況下,會增大包體。
    • Addressables 可以從本地或遠(yuǎn)程服務(wù)器加載資源,并可以通過 Addressables Group 進(jìn)行靈活的資源管理和打包。
  4. 資源更新:

    • Resources 中的資源只能通過重新打包應(yīng)用程序來更新
    • Addressables 可以通過簡單的資源更新或替換來更新應(yīng)用程序中的資源,而無需重新打包整個應(yīng)用程序。

綜上所述,Addressables 比 Resources 更靈活、更高效、更可靠,特別是在處理大量或較大的資源時,Addressables 的異步加載和靈活資源管理功能能夠大大提高應(yīng)用程序的性能和可擴(kuò)展性。但是,在加載少量或較小的資源時,使用 Resources 會更簡單和方便。


二,將Resource項目轉(zhuǎn)為Addressables

2.1 實現(xiàn)邏輯

  • 當(dāng)一個Resources文件夾內(nèi)的資源被標(biāo)記為Addressable時,系統(tǒng)會自動將它從Resources文件夾移動到Resources_moved的新文件夾中。
  • 若有多層目錄,系統(tǒng)也會保留,同步在Resources_moved的新文件夾中創(chuàng)建和Resources中的目錄結(jié)構(gòu)
  • 被標(biāo)記的資源可尋址路徑(加載路徑Key),也會使用Resources目錄下的目錄結(jié)構(gòu)。
  • 原來的加載代碼會從Resources.Load<GameObject>("CZY/Czhenya.prefab") 變成 Addressables.LoadAssetAsync<GameObject>("CZY/Czhenya.prefab")
  • 若工程中有使用public GameObject Czhenya; 這種公開變量拖拽賦值的情況,
    只需將定義代碼修改為public AssetReference Czhenya;
    實例化Instaniate() 修改為 AssetRefName.InstantiateAsync();

需要注意的是: 移動后的路徑Key使用在Resources文件夾下的目錄命名。而在Resources文件夾下加載資源時路徑名稱是不區(qū)分大小寫的,而AA的路徑Key是需要區(qū)分大小寫的。

分享一個工具腳本:

可導(dǎo)入下面腳本到工程中,而后只需將工程中的Resources.Load 修改 為 AAResources.Load 即可完成資源加載方式的轉(zhuǎn)換。

using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class AAResources
{
    /// <summary>
    /// 可尋址資源加載
    ///     強(qiáng)制同步加載GameObject的基本用法
    /// </summary>
    /// <param name="pathKey">路徑key</param>
    /// <typeparam name="T"></typeparam>
    /// <returns></returns>
    public static T Load<T>(string pathKey)
    {
        var op = Addressables.LoadAssetAsync<T>(pathKey);
        T go = op.WaitForCompletion();
        if (op.Status == AsyncOperationStatus.Failed)
        {
            Debug.LogError($"加載資源失敗,路徑:{pathKey},異常 {op.OperationException}");
            return default(T);
        }
        return go;
    }
}

注意:這種同步加載的方式在WebGL上是不支持的,在其他平臺是沒問題的。
Unity 之 Addressable可尋址系統(tǒng) -- 將Resources加載資源方式修改為Addressable加載 -- 實戰(zhàn)(一)

異步寫法如下:

public async Task<T> LoadAssetAsync<T>(string pathKey) where T : UnityEngine.Object
{
    AsyncOperationHandle<T> handle = Addressables.LoadAssetAsync<T>(pathKey);
    await handle.Task;
    return handle.Result;
}

Addressable代碼加載的其他方式,可以參考:Unity 之 Addressable可尋址系統(tǒng) – 代碼加載介紹 – 進(jìn)階(一)


2.2 操作步驟

將Unity資源加載方式從Resources修改到Addressables需要進(jìn)行以下步驟:

  1. 安裝 Addressables 包:在 Unity 的 Package Manager 中安裝 Addressables 包,以便在項目中使用 Addressables 相關(guān)功能。

  2. 配置 Addressables:在 Unity 的菜單欄中選擇 Window -> Asset Management -> Addressables -> Groups,創(chuàng)建一個新的 Addressables Group 并將所需的資源添加到其中。

  3. 修改代碼:修改引用 Resources 加載方式的代碼,改為使用 Addressables 加載資源。您可以使用 Addressables.LoadAssetAsync 方法來異步加載資源,或者使用 Addressables.LoadAsset 方法來同步加載資源。


三,使用Addressables的注意事項

在使用Addressables加載資源時,需要注意資源的生命周期和線程安全問題,下面是一些處理方法:

  • 生命周期管理:在使用Addressables加載資源后,需要注意資源的生命周期問題,以免資源泄漏或者被意外釋放。一般來說,可以使用AsyncOperationHandle.Release()方法來釋放加載的資源。在釋放資源之前,需要確保所有的引用都已經(jīng)被釋放了,否則會導(dǎo)致資源泄漏。如果資源被多次加載,需要在所有的引用都釋放之后,再調(diào)用Release()方法釋放資源。

  • 線程安全:在使用Addressables加載資源時,需要注意線程安全問題,以免出現(xiàn)競態(tài)條件和其他線程問題。一般來說,可以使用異步加載的方式來避免線程問題。如果需要在主線程中訪問異步加載的結(jié)果,可以使用Unity的協(xié)程(Coroutine)來處理異步操作,并在協(xié)程中訪問異步加載的結(jié)果。另外,需要注意在異步加載的回調(diào)函數(shù)中,不要直接修改Unity對象的屬性或者調(diào)用Unity API,否則會導(dǎo)致線程問題。如果需要在回調(diào)函數(shù)中修改Unity對象的屬性或者調(diào)用Unity API,需要使用Unity的主線程調(diào)用(MainThreadDispatcher)來確保線程安全。

  • 錯誤處理:在使用Addressables加載資源時,需要注意錯誤處理問題,以免出現(xiàn)未處理的異常和錯誤信息。一般來說,可以使用AsyncOperationHandle.OperationException屬性獲取異步操作的錯誤信息,并對錯誤進(jìn)行處理。如果出現(xiàn)異常,可以使用try-catch語句來捕獲并處理異常。需要注意的是,在異步操作中,異常和錯誤信息可能會被延遲到異步操作完成后才能被捕獲和處理,所以需要在異步操作完成后再進(jìn)行錯誤處理。


四,使用中遇到問題

報錯:

UnityEngine.AddressableAssets.InvalidKeyException: Exception of type ‘UnityEngine.AddressableAssets.InvalidKeyException’ was thrown., Key=Sound, Type=UnityEngine.AudioClip

可能原因:

  1. 檢查指定的組名稱是否正確,需要保證與Addressable系統(tǒng)中的組名稱一致,包括大小寫。可以在Addressables窗口中查看所有的組名稱和其中的資源。

  2. 檢查指定的組中是否存在指定的資源,需要保證資源名稱與Addressable系統(tǒng)中的名稱一致,包括大小寫。

  3. 檢查指定的資源類型是否正確,需要保證與實際使用的資源類型一致。例如,如果需要加載的是音頻資源,需要使用Addressables.LoadAssetsAsync而不是Addressables.LoadAssetsAsync。

  4. 如果使用了Addressables的標(biāo)簽(label)功能,需要保證指定的標(biāo)簽名稱與實際使用的標(biāo)簽名稱一致,包括大小寫。文章來源地址http://www.zghlxwxcb.cn/news/detail-454386.html


到了這里,關(guān)于Unity 之 Addressable可尋址系統(tǒng) -- 將Resources加載資源方式修改為Addressable加載 -- 實戰(zhàn)(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity基礎(chǔ)3——Resources資源動態(tài)加載

    Unity基礎(chǔ)3——Resources資源動態(tài)加載

    ? 注意:需要我們自己創(chuàng)建 ? 作用:資源文件夾 需要通過 Resources 相關(guān) API 動態(tài)加載的資源需要放在其中 該文件夾下所有文件都會被打包出去 打包時?Unity?會對其壓縮加密 該文件夾打包后只讀 只能通過 Resources 相關(guān) API 加載 ? 注意:需要我們自己將創(chuàng)建 ? 作用:流文件

    2024年02月10日
    瀏覽(28)
  • Unity資源加載方式

    Resources:邏輯資源目錄,這個目錄中的資源會 打入到包 中, 不允許熱更 。在打包時會被壓縮和加密。 加載方式:Resources.Load(常用) 、 AssetDatabase.LoadAssetAtPath等加載接口 StreamingAssets:Raw資源目錄,這個目錄中的資源也會 打入到包 中,且允許程序通過Application.streamingAsse

    2023年04月09日
    瀏覽(29)
  • Unity 如何基于addressable來做資源管理

    一、什么是Addressable系統(tǒng) Addressable系統(tǒng)是Unity 2018.3版本中推出的一種資源管理方案,它可以幫助我們更好地管理游戲中的資源。在以往的游戲開發(fā)中,我們通常使用Resources來進(jìn)行資源加載,但是這種方式存在很多問題,比如加載速度慢、內(nèi)存占用高等。Addressable系統(tǒng)可以解決這

    2024年02月16日
    瀏覽(31)
  • Springboot 使用thymeleaf 服務(wù)器無法加載resources中的靜態(tài)資源異常處理

    Springboot 使用thymeleaf 服務(wù)器無法加載resources中的靜態(tài)資源異常處理

    Springboot使用thymeleaf,并 連接遠(yuǎn)程數(shù)據(jù)庫 啟動時,無法加載resources中的靜態(tài)資源 瀏覽器報錯 后端啟動時報錯 前端打開頁面時后端報錯 打包編譯項目,顯示找不到j(luò)s、css、html等靜態(tài)資源,但本地路徑并沒有寫錯,于是我去找編譯文件,查看是不是靜態(tài)資源沒有編譯到,打開項

    2024年02月04日
    瀏覽(23)
  • Unity3D中Resources動態(tài)加載圖片

    Unity3D中Resources動態(tài)加載圖片

    問題:unity的Resources動態(tài)加載就不必多說了,這里出現(xiàn)的問題是當(dāng)我把圖片放入Resources文件夾后,使用Resources.Load(datapath)卻并沒有出現(xiàn)圖片。 分析:由于你放在文件夾下的是圖片,是Texture2D類型,但是實際用在u3d中的是sprite,所以需要轉(zhuǎn)換類型。 方式: 1.在代碼中先行創(chuàng)

    2024年02月11日
    瀏覽(17)
  • Unity編輯器從PC平臺切換到Android平臺下 Addressable 加載模型出現(xiàn)粉紅色,類似于材質(zhì)丟失的問題

    Unity編輯器從PC平臺切換到Android平臺下 Addressable 加載模型出現(xiàn)粉紅色,類似于材質(zhì)丟失的問題

    Unity編輯器在PC平臺下使用Addressable加載打包好的Cube,運(yùn)行發(fā)現(xiàn)能正常顯示。 而在切換到Android平臺下,使用Addressable時加載AB包,生成Cube對象時,Cube模型呈現(xiàn)粉紅色,出現(xiàn)類似材質(zhì)丟失的問題。如下圖所示。 這是因為GraphicAPI不同導(dǎo)致的。編輯器默認(rèn)用的是PC平臺的GraphicAPI。

    2024年02月08日
    瀏覽(30)
  • 【計組考點】:第五章 指令系統(tǒng)(下)尋址方式

    【計組考點】:第五章 指令系統(tǒng)(下)尋址方式

    根據(jù)學(xué)校課件總結(jié)的計組考點,用過的都說好! 目錄 ?6.操作數(shù)的尋址方式 6.1立即尋址 6.2直接尋址 6.3寄存器尋址 6.4間接尋址 6.5寄存器間接尋址 6.6相對尋址 6.7變址尋址 6.8基址尋址 7.尋址方式例題 7.1例一 7.2例二 8.復(fù)雜指令系統(tǒng)計算機(jī)與精簡指令系統(tǒng)計算機(jī) ?最后?? ??加油

    2024年01月21日
    瀏覽(28)
  • 實驗一8086計CPU系統(tǒng)尋址方式和匯編語言程序設(shè)計

    實驗一8086計CPU系統(tǒng)尋址方式和匯編語言程序設(shè)計

    實驗一8086計CPU系統(tǒng)尋址方式和匯編語言程序設(shè) 一、實驗?zāi)康?(1)掌握8086CPU系統(tǒng)的邏輯地址和尋址方式。 (2)掌握8086CPU系統(tǒng)中機(jī)器數(shù)的表示方式。 (3)掌握指令的機(jī)器碼表示方法。 (4)掌握堆棧的概念和操作過程。 (5)掌握集成開發(fā)環(huán)境下的程序設(shè)計和調(diào)試方法。 (6)掌握匯編語言實

    2023年04月22日
    瀏覽(23)
  • Addressable 異步加載場景并獲取加載進(jìn)度

    一開始用PercentComplete函數(shù)獲取加載進(jìn)度,發(fā)現(xiàn)每次都是從0.85開始計算,不準(zhǔn),官方文檔解釋:“ PercentComplete 將反映總體操作的進(jìn)展情況,而不會準(zhǔn)確地表示僅下載百分比或加載到內(nèi)存中的百分比。 ” ,“ 要獲得準(zhǔn)確的下載百分比,請使用GetDownloadStatus()?!?GetDownloadStatu

    2024年02月12日
    瀏覽(31)
  • Unity 場景加載和資源加載

    Unity 場景加載和資源加載

    一個游戲往往都是由很多場景組成的,例如會有主界面場景、戰(zhàn)斗場景…等,不同的場景也是由若干的資源組合而成,在游戲的制作過程中,場景和資源的加載是不可或缺的。不管是場景還是資源都會涉及到加載的問題,在什么時候進(jìn)行場景或資源的加載?場景的加載和資源

    2024年02月04日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包