从 Asset Bundle 加载资源以在 Unity 中进行 Play 资源交付

Posted

技术标签:

【中文标题】从 Asset Bundle 加载资源以在 Unity 中进行 Play 资源交付【英文标题】:Loading assets from Asset Bundles for Play Asset Delivery in Unity 【发布时间】:2021-11-21 15:21:09 【问题描述】:

我目前正在维护一个旧项目,我非常希望保留旧代码并尽可能避免重构旧代码。为了将它上传到 google play store,我使用了 play assets delivery PAD system,它需要资产捆绑系统。

我能够通过 tutorials 之后的协程以异步方式成功加载资产包。

我的问题是;是否可以在不改变原始访问方式的情况下访问捆绑资产,例如

UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/Prefabs/Game/Tiles/Tile.prefab", typeof(Tile)) as Tile;

而不是实现下面的代码?

var assets = AssetDatabase.FindAssets("t:Sprite", 
        new[] "Assets/Images");
    foreach (var guid in assets) 
    
        string assetPath = AssetDatabase.GUIDToAssetPath(guid);
        Sprite loadedSprite = null;
        if (imageDictionary.TryGetValue(assetPath, out loadedSprite) 
            == false)
        
            loadedSprite = AssetDatabase.LoadAssetAtPath<Sprite>(
                assetPath);
            if (loadedSprite != null)
            
                imageDictionary.Add(assetPath, loadedSprite);
                AddImageToList(assetPath, loadedSprite);       
            
        
    

我目前正在使用由纹理和脊椎动画文件夹组成的 2 个资产包。我创建了 2 个资产包,它们是纹理文件夹 (110 MB) 和脊椎动画包 (23 MB) 和基础资产。当我创建 aab 文件时,文件大小增加到 370 MB。 (我知道我需要拆分我的捆绑包以匹配基本资产 150 MB 的 Play 商店要求,但这是一个不同的问题。)

而且,我有根据的猜测是,unity 不仅是添加资产包,而且还以老式方式添加资产,这可能与这个问题有关。

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题。 最初构建的 AAB 文件超过 150MB,无法上传到商店。 但是我找到了上传的方法。

订购

    将构建场景放入“File - BuildSetting - Scene In Build”中。

    在“File - BuildSetting”中勾选“Build App Bundle”。

    关闭 BuildSetting 并点击“Google - Build android App Bundle” 建造。 (在这个过程中,我没有创建AssetBundle,我使用的是原程序)

    忽略构建过程中的大尺寸警报。

    构建完成后,大小将大于 150MB。 不用担心构建文件的大小并将其上传到 Google 控制台。

"Google - Build Android App Bundle" 用这个构建的文件就上去了。 我希望问题得到解决。

【讨论】:

以上是关于从 Asset Bundle 加载资源以在 Unity 中进行 Play 资源交付的主要内容,如果未能解决你的问题,请参考以下文章

unity打包-1.Asset Bundle资源打包

unity打包-1.Asset Bundle资源打包

怎样从资源里加载一个图集中的一个sprite

如何从资源文件夹动态加载资产到公用文件夹并使用asset()助手访问它们

AssetBundle介绍

Unity 5 官方打包管理工具 Asset Bundle Manager