unity 打AB包中遇到的坑以及一些心得

unity 打AB包中遇到的坑以及一些心得

unity踩坑之旅


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

依旧很突然,昨晚临睡前突然收到老板的要求:把指定的美术资源打个AB包。本来想着这不小菜一碟,结果今天差点没把我噎到,特此记录


一、AB包是什么,基础引入?

unity官方写得很好,我就不班门弄斧了。如果太难懂的话,也可以上论坛看看各位大佬的见解,这里就不赘述了。
unity的打AB包教程

二、AB包怎么操作,我的见解?

1.自己写编辑器脚本 (简单快捷)

步骤就在里面的4-8点
unity的打AB包教程

在Editor文件夹创建一个脚本,用于创建AB包

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using System.IO;

public class bundle
{
    
    
    [MenuItem("AssetsBundle/Build AssetBundles")]
    static void BuildAllAssetBundles()//进行打包
    {
    
    
        string dir = "AssetBundles";
        //判断该目录是否存在
        if (Directory.Exists(dir) == false)
        {
    
    
            Directory.CreateDirectory(dir);
        }
        //参数一为打包到哪个路径,参数二压缩选项  参数三 平台的目标
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.Android);
    }
}

下面这个是加载AB包GameObject到场景,在非Editor文件夹即可

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class BundledObj : MonoBehaviour
{
    
    

    public string astName = "hello";
    public string ziyuan = "GameObject";

    // Start is called before the first frame update
    void Start()
    {
    
    
        AssetBundle loc = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath, astName));

        GameObject a = loc.LoadAsset<GameObject>(ziyuan);
        Instantiate(a);
        loc.Unload(false);
    
    }

   
}

2.使用asset bundle browser (unity2020开始需要从github下载)

com.unity.assetbundlebrowser

3.使用addressable (最新、可寻址,据说unity在这个插件上下了大功夫,包含了发布AB包到服务器,以及如何像本地一样使用远程包)

林大佬对addressable的介绍

三、AB包的一些坑,我的解决?

坑记录:(以下坑是使用上述方法1和方法2遇到)

1.打AB包坑之一:打包、加载包的unity版本需要相同,否则读取时会报错

unity Unable to read header from archive file:

补充:这个错误是在使用unity2020.3.20f1c1打包,用2020.3.8f1c1加载报错;但是使用unity2019.4.4f1打包,2020.3.8f1c1加载又正常。所以结论修改为——unity2020以上请使用相同版本打包与加载
20221111-2310再次补充:使用unity2020.3.20f1c1打包,用2020.3.8f1c1加载,发现没有报错。。。。。。。然而上午的时候疯狂报错,只能说人品不好,吃完饭回来什么都解决了。。

2.变成粉色

粉色解决

有不生效的shader应该怎么办?添加到里面也没用,需要加载方也要有shader才行;试过打包shader也没用

3.另外,standard的transparent不起作用?打包前看还正常,打包后没有透明效果了;也是目前无解


总结

提示:这里对文章进行总结:

AB包的研究还要继续,有时间再继续补充,欢迎各位朋友评论

猜你喜欢

转载自blog.csdn.net/xiaoLongww/article/details/127808105
今日推荐