您的位置:首页 > 移动开发 > Unity3D

[坑]Unity5.X—— AssetBundle

2017-07-04 17:19 211 查看
首先,应当给资源设置AssetBundleName



这里设置的是shape/cube,注意只能小写,可以利用/进行分层

设定完毕后,创建一个Editor文件夹并创建脚本BuildAssetBundle,扩展编辑器,代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class BuildAssetBundle{

[MenuItem("AssetBundle/Build AssetBundles")]
static void BuildAllAssetBundles() {
BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.ForceRebuildAssetBundle, BuildTarget.StandaloneWindows);
}
}


此时,在编辑器上出现扩展:



在AssetBundle菜单下,点击Build AssetBundles即可在Assets/AssetBundles文件下生成对应的AssetBundle

[需要注意的是,Assets/AssetBundles不会自动创建,需要在点击Build AssetBundles之前先手动创建文件夹]

如果没有问题的话,在编辑器下就会生成对应的文件:



但是,在执行时,Unity报错

ArgumentException: The output path "Assets/AssetBundles" doesn't exist

UnityEditor.BuildPipeline.BuildAssetBundles (System.String outputPath, BuildAssetBundleOptions assetBundleOptions, BuildTargetGroup targetPlatformGroup, BuildTarget targetPlatform) (at C:/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:488)

UnityEditor.BuildPipeline.BuildAssetBundles (System.String outputPath, BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform) (at C:/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:481)
BuildAssetBundle.BuildAllAssetBundles () (at Assets/Editor/BuildAssetBundle.cs:10)


解决办法 : 使用绝对路径来指定BuildAssetBundles的输出路径,更正后代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class BuildAssetBundle{

[MenuItem("AssetBundle/Build AssetBundles")]
static void BuildAllAssetBundles() {
string path = Application.dataPath + "/Assets/AssetBundles";
BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.ForceRebuildAssetBundle, BuildTarget.StandaloneWindows);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息