欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UNITY2019.3之如何生成和加载ASSETBUNDLE包

程序员文章站 2022-03-30 08:25:10
...

https://www.freesion.com/article/638669176/

生成ASSETBUNDLE

新建一个Cube和Capsule,命名如图

 

然后生成预制体,新建AssetBundle

 

新建一个Editor文件夹(这个是必须的),然后在目录下创建C#脚本:

 
  1. using UnityEditor;

  2. using System.IO;

  3.  
  4. public class CreateAssetbundles:Editor

  5. {

  6.  
  7. [MenuItem("AssetsBundle/Build AssetBundles")]

  8. static void BuildAllAssetBundles()//进行打包

  9. {

  10. string dir = "AssetBundles";

  11. //判断该目录是否存在

  12. if (Directory.Exists(dir) == false)

  13. {

  14. Directory.CreateDirectory(dir);//在工程下创建AssetBundles目录

  15. }

  16. //参数一为打包到哪个路径,参数二压缩选项 参数三 平台的目标

  17. BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);

  18. }

  19. }

保存之后编辑器菜单栏就回出现对应按钮如下图:

 

点击之后就在工程目录对应文件下生成AssetBundle文件:

 

加载ASSETBUNDLE

在Hierarchy面板新建一个空物体,创建一个加载AssetBundle的脚本,脚本内容如下:

 
  1. using UnityEngine;

  2.  
  3. public class LoadFromFileExample : MonoBehaviour

  4. {

  5.  
  6. private void Start()

  7. {

  8. //通过文件路径加载对应的包

  9. AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/scene/wall.unity3d");

  10. GameObject wallPrefab = ab.LoadAsset<GameObject>("CubeWall");

  11. //实例化预制体

  12. Instantiate(wallPrefab);

  13. //加载所有包,然后遍历实例出来

  14. //Object[] objs = ab.LoadAllAssets();

  15. //foreach (var item in objs)

  16. //{

  17. // Instantiate(item);

  18. //}

  19. }

  20. }

 

版权声明:本文为a1191835397原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/a1191835397/article/details/96989037