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

Unity 之 Addressable可尋址系統(tǒng) -- 資源遠程加載 | 資源預下載 -- 進階(三)

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

概述:實現(xiàn)方式是使用Unity的可尋址系統(tǒng)結(jié)合云資源分發(fā)(AA+CCD)的形式。本篇文章就來為講解CCD的使用介紹,以及AA+CCD使用的示例。

一,Unity 云資源分發(fā) – 使用介紹

1.1 CCD 的介紹

在Hub界面的游戲云選項,可以看到官網(wǎng)介紹入口:

unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

CCD:全稱Cloud Content Delivery,譯為:云端資源分發(fā)。

Unity 推出首個用于實時游戲更新的端到端服務:專為游戲開發(fā)打造的內(nèi)容分發(fā)網(wǎng)絡 (CDN) 和后端即服務 (BAAS)。

Unity最新的在線資源更新服務,結(jié)合革新性的Addressable Assets資源管理系統(tǒng)幫助開發(fā)者借助云端強大的資源管理和內(nèi)容分發(fā)能力,輕松制作和發(fā)布游戲更新。

免費流量額度: 一般用戶最高10T,Pro用戶最高50T。


1.2 后臺準備工作

使用前需要在Unity后臺,創(chuàng)建項目并開啟相應服務,流程如下:

  1. 前往Unity項目界面:后臺入口 點擊前往,PS:登錄使用賬號,需要和Hub使用賬號一致:
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

  2. 右上角這個地方可以管理組織:
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

  3. 點擊“Crendentials”到賬號綁定界面,選擇組織進行綁定騰訊云賬號,綁定后成功后是下面那個樣子(若是新建賬號,還需要登錄騰訊云進行實名認證即可)
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

  4. 選擇“Cloud Content Delivery“,然后選擇組織,點擊開通服務即可:
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

  5. 開啟服務后,回到“Cloud Content Delivery“頁,下拉,選擇自己的項目:
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

  6. 選擇項目后跳轉(zhuǎn)到項目設(shè)置頁,下面有一個“Buckets”,然后創(chuàng)建一個桶用來存儲資源:
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

  7. 選擇項目后跳轉(zhuǎn)到項目設(shè)置頁,下面有一個“COS Key”,這個后面需要填寫到工程里:
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

官方文檔:CCD用戶使用手冊


二,CDD的使用

2.1 CCD可視化界面的使用

  1. 插件導入工程:Window -> Pack Manager -> 搜索Cloud Content Delivery
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

  2. 設(shè)置Cloud Content DeliveryCOS Key,在ProejctSetting面板,如下圖。這樣才能把本地項目和遠程連接上。
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

  3. 打開插件管理面包:Window -> Cloud Content Delivery -> Manager。
    操作步驟:1.選擇桶;2.選擇打包好的資源上傳;3.新建發(fā)布版本;4.設(shè)置可尋址系統(tǒng)遠程資源加載地址(打包前設(shè)置)。其中Badge是標記,用來標記Release的。
    unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

Badge是可以切換標記Release的,若用戶通過Badge來訪問資源,則可以通過Badge的切換來實現(xiàn)訪問不同的資源,這時訪問資源的URL是不需要更換的。

PS:這里有一個點需要注意的是,上傳資源時需要將AddressableAssetSettings的路徑設(shè)置為Remote
否則會彈出如下提示:
unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

修改設(shè)置如下:
unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

還有一個注意事項:
在配合addressable使用releasepromote功能時,務必使兩個bucket對應的addressableSettings(Window -> Asset Managment -> Addressables -> Settings)中Catlog選項下的Player Version Override的值保持一致且不為空!因為Catalog的配置文件名稱是和這個版本對應的,所以不能對不上。
unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

打包后的配置:
unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎


2.2 CDD命令行界面使用

官方使用示例:CDD命令行界面使用

2.2.1 準備工作

要設(shè)置 CCD 以使用 CLI,請執(zhí)行以下操作:

如果是首次使用 Unity 服務:

  1. 創(chuàng)建一個 Unity ID 帳戶(如果還沒有此帳戶)。
    從 Develop 選項卡登錄到 Develop Dashboard。
    單擊 Create New Project,然后在 Create New Project 窗口中輸入詳細信息。
  2. 在 Develop Dashboard 中,選擇您的項目。
  3. 選擇項目名稱,或單擊 View。
  4. 在 Develop Dashboard 的 Overview 頁面左側(cè)導航欄中,選擇 Content Delivery。
  5. 在左側(cè)導航欄中,選擇 Download CLI。
  6. 要下載 CLI,請找到您的操作系統(tǒng)的版本,然后選擇下載圖標。
  7. 在左側(cè)導航欄中,前往 COS Key 部分。
  8. 復制您的 COS 密鑰。
  9. 在要從中上傳內(nèi)容的計算機上運行 CLI。
  10. 通過 auth 命令使用您的 COS 密鑰登錄 CLI。

2.2.2 CLI 用法

CLI 中的 CCD 命令的基本格式如下:

ucd [命令]

可用命令為:

  • auth:向 Content Delivery 進行身份驗證。
  • badges:管理發(fā)布版本的標示。
  • buckets:管理項目的存儲桶。
  • config:管理用于設(shè)置和標識當前存儲桶的選項。
  • entries:管理當前存儲桶的條目。
  • releases:管理當前存儲桶的發(fā)布版本。
    要查看當前使用的 CLI 版本,請?zhí)砑?--version 標志:
ucd --version

可以在任何命令后添加以下全局標志:

  • –apikey string:用戶指定的 COS 密鑰,用于訪問 Content Delivery。
  • -h、–help:顯示給定命令的所有其他參數(shù)和標志。
  • -q、–quiet:禁止顯示由指定命令執(zhí)行的操作。
  • -v、–verbose:顯示錯誤信息。

命令使用示例:

  • 創(chuàng)建存儲桶:
ucd buckets create [項目ID] [桶名字]
  • 列出項目的所有存儲桶:
ucd buckets listCos
  • 將當前存儲桶設(shè)置為激活的存儲桶:
ucd config set bucket [桶ID]
  • 將本地文件夾與當前存儲桶同步:
ucd entries syncCos [local_dir_path]
  • 查看當前存儲桶中所有條目的列表:
ucd entries list

PS:存儲桶和條目名稱區(qū)分大小寫。


三,AA + CCD資源更新 – 實例練習

3.1 打包設(shè)置資源地址

打包地址分為:本地路徑和遠程路徑。這兩個路徑都在Addressables Profies面板顯示:

unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

PS:沒設(shè)置明白的童鞋,建議去查看前面的入門文章:2.3 Profiles - 配置文件 詳細介紹

這個地方設(shè)置完成之后,就可以分別對每個分組進行設(shè)置為遠程組還是本地組了:
unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

將Build Load Path設(shè)置為Remote,就已將本組設(shè)置為遠程組了,此時再次打資源包,此組的Bundle包就會在遠程組設(shè)置的Build路徑下顯示了,而不會打包安裝包里面。當游戲中使用文件時,也在遠程進行加載的。

修改完成后就可以打資源包了:在Group面板找到Build選項,然后選擇“New Build” -> “Default Build Script”:

unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

等待進度條執(zhí)行完成,即可看到打包成功日志:

unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

然后就可以執(zhí)行一種步驟使用CCD進行上傳資源了。


3.2 預下載獲取下載進度

基礎(chǔ)如下:

  1. 總大小 = 獲取所有下載組的大小
  2. 當前大小 = 獲取當前組下載進度 + 已下載組大小
  3. 進度 = 當前大小 - 總大小

使用的是Addressables系統(tǒng)的Download相關(guān)API。

下載場景搭建:
unity addressable預加載,《Unity 之 Addressable》,unity,游戲引擎

預下載邏輯實現(xiàn):

using System;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.UI;

// 檢測更新并下載資源
public class DownloadManager : MonoBehaviour
{
    /// <summary>
    /// 顯示下載狀態(tài)和進度
    /// </summary>
    public Text updateText;

    /// <summary>
    /// 重試按鈕
    /// </summary>
    public Button retryBtn;

    private AsyncOperationHandle downloadDependencies;
    
    // 下載文件Key
    private string downLoadKey = "Cube";
    
    /// <summary>
    /// 下載多個文件列表
    /// PS: 一個組內(nèi)填寫一個資源Key即可,下載時會按照資源組進行下載
    /// </summary>
    private List<string> downLoadKeyList = new List<string>()
    {
        "Cube", "Logo"
    };
    
    // 當前下載文件索引
    private int downLoadIndex = 0;
    // 下載完成文件個數(shù)
    private int downLoadCompleteCount = 0;
    // 下載每組資源大小
    List<long> downLoadSizeList = new  List<long>();
    // 下載資源總大小
    private long downLoadTotalSize = 0;
    // 當前下載大小
    private float curDownLoadSize = 0;
    // 下載完成
    private bool isDownLoadFinished = false;
    
    void Start()
    {
        downLoadIndex = 0;
        // 重試
        retryBtn.onClick.AddListener(() =>
        {
            retryBtn.gameObject.SetActive(false);
            StartCoroutine(StartPreload());
        });
        
        // 開始預下載
        StartCoroutine(StartPreload());
    }
    
    /// <summary>
    /// 預下載
    /// </summary>
    /// <param name="key">資源包key</param>
    /// <returns></returns>
    public IEnumerator StartPreload()
    {
        Debug.Log("開始下載");
        
        // 初始化 --> 加載遠端的配置文件
        yield return Addressables.InitializeAsync();
        
        // 清理緩存
        Caching.ClearCache();

        for (int i = 0; i < downLoadKeyList.Count; i++)
        {
            AsyncOperationHandle<long> size = Addressables.GetDownloadSizeAsync(downLoadKeyList[i]);
            Debug.Log("獲取下載內(nèi)容大?。? + size.Result);
            downLoadSizeList.Add(size.Result);
            downLoadTotalSize += size.Result;
        }

        if (downLoadTotalSize <= 0)
        {
            Debug.LogError("無可預下載內(nèi)容~");
            yield break;
        }
        isDownLoadFinished = true;

        for (int i = downLoadIndex; i < downLoadKeyList.Count; i++)
        {
            downloadDependencies = Addressables.DownloadDependenciesAsync(downLoadKeyList[i]);
            yield return downloadDependencies;
            if (downloadDependencies.Status == AsyncOperationStatus.Failed)
            {
                downLoadIndex = i;
                isDownLoadFinished = false;
                updateText.text = "下載失敗,請重試...";
                retryBtn.gameObject.SetActive(true);
                yield break;
            }
            else
            {
                downLoadCompleteCount = i + 1;
            }
        }

        Debug.Log("下載完成"); ;
    }

     
    private void Update()
    {
        // 下載是否有效
        if (isDownLoadFinished && downloadDependencies.IsValid())
        {
            curDownLoadSize = 0;
            for (int i = 0; i < downLoadSizeList.Count; i++)
            {
                if (i < downLoadCompleteCount)
                {
                    curDownLoadSize += downLoadSizeList[i];
                }
            }

            if (downLoadCompleteCount < downLoadSizeList.Count - 1)
                curDownLoadSize += downloadDependencies.GetDownloadStatus().Percent;

            float percent = curDownLoadSize * 1.0f / downLoadTotalSize;
            //Debug.Log($"共{downLoadKeyList.Count}個文件,下載到第{downLoadCompleteCount}個文件,當前文件下載進度{downloadDependencies.GetDownloadStatus().Percent},總下載進度{percent}。");
               
            if (percent < 1)
            {
                updateText.text = "正在下載:" + (percent * 100).ToString("F1") + "%";
            }
            else if (downloadDependencies.IsDone)
            {
                isDownLoadFinished = false;
                updateText.text = "下載完成";
                Debug.Log("下載完成 釋放句柄");
                // 下載完成釋放句柄
                Addressables.Release(downloadDependencies);
            }
        }
    }
}

TODO:上一篇 --> Unity 之 Addressable可尋址系統(tǒng) – 資源加載和釋放 – 進階(二)

TODO:下一篇 --> Unity 之 Addressable可尋址系統(tǒng) – 資源熱更新 – 進階(四)文章來源地址http://www.zghlxwxcb.cn/news/detail-795273.html

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

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Unity 如何基于addressable來做資源管理

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

    2024年02月16日
    瀏覽(30)
  • Unity Addressables學習筆記(1)---創(chuàng)建遠程服務器加載資源

    Unity Addressables學習筆記(1)---創(chuàng)建遠程服務器加載資源

    Unity Addressables學習筆記—匯總 Bulid Path選擇RemoteBuildPath Load Path我選擇了custom,地址是http://localhost:8080/WebGL/ 遇坑1 :最開始我選擇的Build Path 是 LocalBuildPath,Load Path是custom的時候報錯如下: 解決辦法:把Build Path 改為RemoteBuildPath后才好,我也不知道為什么不能把本地的資源放到遠程

    2024年02月14日
    瀏覽(26)
  • Unity 從服務器加載AssetBundle資源寫入本地內(nèi)存,并將下載保存的AB資源從本地內(nèi)存加載至場景

    AB資源打包后有一個【目錄文件】AssetBundle,他保存了所有AB資源的路徑與名稱, 通過aLLAssetBundleURL鏈接路徑 組拼 從【目錄文件】獲得的AB資源的名字,然后再協(xié)程方法內(nèi)編寫相關(guān)代碼,從而實現(xiàn)從服務器加載資源的功能。詳細見代碼。

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

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

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

    2024年02月08日
    瀏覽(30)
  • Addressable 異步加載場景并獲取加載進度

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

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

    Unity 場景加載和資源加載

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

    2024年02月04日
    瀏覽(23)
  • Unity使用 Addressables 預加載所有資源,提現(xiàn)加載資源,發(fā)布webgl加載緩慢問題

    Unity使用 Addressables 預加載所有資源,提現(xiàn)加載資源,發(fā)布webgl加載緩慢問題

    Addressables 我也是剛接觸,知道的不是很多,基本的用法還是知道一些的 1 .在Window–Package Manager里找到Addressables進行安裝 ? 2.選擇資源,點擊Assets中的一個資源,在Inspector面板上就會出現(xiàn)一個勾選Assressable,也就是是否加入資源打包的分組,和AssetBundle分組是一個性質(zhì)。選上以

    2023年04月08日
    瀏覽(27)
  • Unity資源加載方式

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

    2023年04月09日
    瀏覽(29)
  • Unity中資源異步加載

    ????????Unity作為一款優(yōu)秀的游戲引擎,廣泛應用于游戲制作領(lǐng)域。在游戲的開發(fā)過程中,資源加載的效率和流暢度尤為重要。對于較大的資源文件,同步加載方式可能會導致游戲卡頓、延遲等問題。因此,采用異步加載的方法可以提高游戲的效率和用戶體驗。 本篇博客將

    2024年02月06日
    瀏覽(22)
  • 【Unity程序技巧】 資源加載管理器

    【Unity程序技巧】 資源加載管理器

    ?????個人主頁 :@元宇宙-秩沅 ????? hallo 歡迎 點贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 :Unity基礎(chǔ)實戰(zhàn) 1.涉及知識點 2. 特點 方便加載資源,為資源加載提供了接口 3.腳本 加載測試 ?【Unityc#專題篇】之c#進階篇】 ?【Unityc#專

    2024年02月07日
    瀏覽(17)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包