简单的AssetBundle打包、加载

设置资源文件的AssetBundle属性


1.png
2.png

创建打包脚本、打包

BuildAssetBundle.cs(使工具栏中出现BuildAssetBundle)


using System.IO;
using UnityEditor;
using UnityEngine;

public static class BuildAssetBundle
{
    [MenuItem("BuildAssetBundle/Bulid")]
    public static void Build()
    {
        CreateDirectory();
        BuildAssetBundles();

        //==========================================================

        /// <summary>
        /// 创建StreamingAssets文件夹。若已存在则跳过
        /// </summary>
        void CreateDirectory()
        {
            if (!Directory.Exists(Application.streamingAssetsPath))
                Directory.CreateDirectory(Application.streamingAssetsPath);

        }
        /// <summary>
        /// 打包文件至StreamingAssets文件夹
        /// </summary>
        void BuildAssetBundles()
        {
            BuildPipeline.BuildAssetBundles(
                Application.streamingAssetsPath,
                BuildAssetBundleOptions.None,
                BuildTarget.StandaloneWindows);
        }

    }

}
3.png

编写测试脚本、测试

Test.cs(提供了两种加载方式)


using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

namespace XiaoJie
{
    public class Test : MonoBehaviour
    {
        public GameObject m_Target;

        private string m_AbPath = Application.streamingAssetsPath + "/texture.v1";


        public void Test01()
        {
            ChangeTargetTexture(AssetBundle.LoadFromFile(m_AbPath),"Texture1");
        }
        public IEnumerator Test02()
        {
            UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(m_AbPath);
            yield return request.SendWebRequest();

            ChangeTargetTexture(
                DownloadHandlerAssetBundle.GetContent(request), "Texture2");
        }
        private void ChangeTargetTexture(AssetBundle ab , string textureName)
        {
            m_Target.GetComponent<Renderer>().material.mainTexture = 
                ab.LoadAsset<Texture>(textureName);
            //相同的AB包被重复加载会返回null,这里要卸载掉
            ab.Unload(false);
        }
        private void OnGUI()
        {
            if(GUILayout.Button("Test01"))
            {
                Test01();
            }
            if (GUILayout.Button("Test02"))
            {
                StartCoroutine(Test02());
            }
        }
    }
}

4.png
5.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我是个懒散惯了的人,当然对外是不能这么说的,要好好包装自己,自我介绍的时候常说我喜欢自由,不喜欢按部就班地一...
    吹云的狂风阅读 542评论 0 0
  • 起始 自去年10月28日被周老师拉到一个写作群后,11月3号开始写了在简书里的第一篇文章(《我眼中的周明达老师》)...
    lily_眀芬阅读 174评论 0 6
  • 诗苑香幽自砺磨,华章翰墨漾清波。 书山攀顶忧愁少,文海扬浆乐趣多。 仄仄太难勤中练,平平不易苦间哦。 微群格律情凝...
    啸巍阅读 705评论 5 1