关于Unity中从服务器下载资源压缩包AssetBundle的步骤

1: 在Unity中,能为用户存储资源的一种压缩格式的打包集合,他可以存任意一种Unity引擎可以识别的资源: 模型,音频,纹理图,动画, 开发者自定义的二进制文件;

2: 这样做的好处就是:a.我们的安装包不用做那么大,可以把很多大的资源放到服务器上面去,安装包就比较小

           b.如果有改动的话可以去更新资源,AssetBundle就是Unity提供的一种更新资源的机制
3: AssetBundle开发步骤:
  (1): 创建AssetBundle: 项目的资源打包到AssetBundle的集合里面;
  (2): 部署到web服务器, 让客户端能够从服务器下载我们的AssetBundle;
  (3): 加载AssetBundle, 加载里面的资源;
  (4): 卸载AssetBundle, 压缩包,镜像卸载;

4:AssetBundle只会打包Assets目录下的资源文件

AssetBundle创建

1: Assets窗口的资源才可以打包;
2: 创建一个AssetBundle文件,它的名字固定式小写如果有大写系统也会换成小写;
3: AssetBundle可以设置一个Varaint,就是一个后缀。可以通过后缀来设置不同分辨率的资源;
4: 将一个资源打入到AssetsBundle: 点击资源,选择对应的AssetBundle就可以了;
5: 编写代码导出AssetBundle文件:
  (1)using UnityEditor; 引入编辑器操作的名字空间;
  (2)调用Api: BuildPipeline.BuildAssetBundles(outpath, BuildAssetBundleOptions, BuildTarget); 文件夹的路径需要手动创建,否者会报错;
6: 使用buildmap来对指定的资源进行打包;
  (1)BuildPipeline.BuildAssetBundles(outpath, AssetsBoundlesBuild[], BuildAssetBundleOptions, BuildTarget);
  (2)AssetBundleBuild[] buildMap = new AssetBundleBuild[2]; //定义AssetBuild数组
    buildMap[0].assetBundleName = "resources"; //打包的资源包名称,开发者可以随便命名
    string[] resourcesAssets = new string[2]; //定义字符串,用来记录此资源包文件名称
    resourcesAssets[0] = "resources/1.prefab"; //将需要打包的资源名称赋给数组
    resourcesAssets[1] = "resources/MainO.cs";
    buildMap[0].assetNames = resourcesAssets; //将资源名称数组赋给AssetBuild
    BuildPipeline.BuildAssetBundles("Assets/AssetBundles", buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64); //打包资源并导出

AssetBundle实例

1.创建Unity项目和文件目录,保存场景

2.创建一个立方体Cube节点,拖进res文件夹下,变成预制体

3.点击这个预制体cube,发现最右下角有一栏AssetBundle,点击第一个选项框,点击New,命名为cube_bundle,预制体选择这个新建的Bundle,第二个选项框是后缀,可以加也可以不加。等我们打包的时候就会把cube放进cube_bundle里面

关于Unity中从服务器下载资源压缩包AssetBundle的步骤

4.现在并没有压缩资源包,需要我们用代码来打包资源到AssetBundle,第3步只是标记了这个预制体资源属于哪个包

5.代码开始,首先扩展编辑器,创建Editor文件夹,里面创建一个脚本export_assetbundle,再创建一个AssetBundles的文件夹用来作为等下压缩包的输出路径

 打开export_assetbundle脚本

using UnityEngine; using System.Collections; using UnityEditor; public class export_assetbundle : Editor { [MenuItem("build/build_assetbundle")]//菜单栏上面多了build/build_assetbundle选项 //点击build/build_assetbundle会调用的函数 static void run() { // 调用函数来打包asset bundle; // 输出路径: "Assets/AssetBundles", 手动创建好 //打包所有的AssetBundles BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);//参数分别为输出路径,选项(默认没要求),发布的平台 // end //打包多个资源的做法,整个列表的资源 /* AssetBundleBuild[] buildMap = new AssetBundleBuild[2]; //定义AssetBuild数组 buildMap[0].assetBundleName = "resources"; //打包的资源包名称,开发者可以随便命名 string[] resourcesAssets = new string[2]; //定义字符串,用来记录此资源包文件名称 resourcesAssets[0] = "resources/1.prefab"; //将需要打包的资源名称赋给数组 resourcesAssets[1] = "resources/MainO.cs"; buildMap[0].assetNames = resourcesAssets; //将资源名称数组赋给AssetBuild BuildPipeline.BuildAssetBundles("Assets/AssetBundles", buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64) */ } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdpfj.html