Unity3D热更新<二> 编辑器扩展和打包AssetBundle
2016-03-27 14:45
561 查看
这里是5.0以前的打包方法,5.0以后不太一样,但是还没有研究5.0的打包方法,所以先写上。BuildPipeline.BuildAssetBundle 这个创建AssetBundle的方法在5.0中已经过时了。
http://www.cnblogs.com/tekkaman/p/4040081.html 这篇文章可以先看看。
顺带着学习了一下编辑器扩展,蛮简单的。
主要用到了这几个API :
EditorUtility.SaveFilePanel 保存文件窗口
Selection.GetFiltered 筛选得到选择物体
BuildPipeline.BuildAssetBundle 创建AssetBundle
EditorUtility.DisplayDialog 弹出消息框
AssetDatabase.Refresh 刷新有更新的资源
以下是老版本打包代码:
加载AssetBundle
生成AssetBundle的时候怎么设置版本号,我还没摸索出来,留着下回再写!
http://www.cnblogs.com/tekkaman/p/4040081.html 这篇文章可以先看看。
顺带着学习了一下编辑器扩展,蛮简单的。
主要用到了这几个API :
EditorUtility.SaveFilePanel 保存文件窗口
Selection.GetFiltered 筛选得到选择物体
BuildPipeline.BuildAssetBundle 创建AssetBundle
EditorUtility.DisplayDialog 弹出消息框
AssetDatabase.Refresh 刷新有更新的资源
以下是老版本打包代码:
using UnityEngine; using System.Collections; using UnityEditor; //编辑器扩展 要导入UnityEditor命名空间 public class ExportAssetBundleBySelection : MonoBehaviour { //5.0以前打包 AssetBundle //编辑器菜单显示路径 [MenuItem("Assets/讲选择的资源打包成AssetBundle")] //方法必须是静态 static void myWindow() { //保存文件对话框 返回路径 //标题栏 //默认目录文件夹 //默认名 //默认文件后缀名 string path= EditorUtility.SaveFilePanel("保存AssetBundle文件","Assets/Bundle","new AssetBundle","AssetBundle"); //如果路径长度不为0 if(path.Length!=0) { //得到选择的文件数组 //限定文件类型 底层文件 Object[] selectionObject = Selection.GetFiltered(typeof(Object),SelectionMode.DeepAssets); //创建AssetBundle |是按位或操作符 两边都会进行计算 //激活选择的物体 物体数组 路径 AssetBundle参数 目标平台 bool isDone= BuildPipeline.BuildAssetBundle(Selection.activeObject, selectionObject, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, BuildTarget.StandaloneWindows); //如果打包成功 弹出完成提示对话框 if(isDone) { EditorUtility.DisplayDialog("AssetBundle","资源打包成功","确定"); } //刷新资源 AssetDatabase.Refresh(); } } }
加载AssetBundle
void Start (){ StartCoroutine(wwwLoad()); StartCoroutine(wwwDownload ()); } //这种方法不会保存缓存 每次都会重新下载 IEnumerator wwwLoad() { //实例化一个WWW(地址) WWW www=new WWW (@"file:///C:/Users/Administrator/Desktop/AssetBundle/aaa.AssetBundle"); //等待下载完 yield return www; //根据prefab的名字读取资源 Instantiate(www.assetBundle.LoadAsset("Cube")); //释放assetBundle内存镜像 www.assetBundle.Unload(false); AssetDatabase.Refresh(); }
//WWW.LoadFromCacheOrDownload缓存文件地址 C:\Documents and Settings\Administrator\Local Settings\Application Data\Unity\WebPlayer\Cache DefaultCompany_XX XX是工程的名字 IEnumerator wwwDownload() { //声明一个WWW(地址,版本号) 如果有缓存不下载 如果缓存版本不是最新会下载更新 WWW www=WWW.LoadFromCacheOrDownload (@"file:///C:/Users/Administrator/Desktop/AssetBundle/aaa.AssetBundle" ,1); //等待下载完 yield return www; //根据prefab的名字读取资源 Instantiate(www.assetBundle.LoadAsset("Cube")); //释放assetBundle内存镜像 www.assetBundle.Unload(false); //清楚下载的缓存文件 Caching.CleanCache(); //设置最大缓存容量,如果超过,会释放老缓存来存放新的缓存 Caching.maximumAvailableDiskSpace =200 *1024*1024; }
生成AssetBundle的时候怎么设置版本号,我还没摸索出来,留着下回再写!
相关文章推荐
- unity所有特殊文件夹的用途
- unity 常用函数
- ubuntu14.04 Unity Eclipse图标显示异常
- Unity Shaders and Effects Cookbook (2-5) 如何使用法线贴图
- Unity 用简单工厂模式创建对象
- ubuntu14.04 LTS 安装 Unity Tweak Tool
- Community Detection (社区发现)算法
- 我的Unity Shader 学习心路历程
- Oculus Rift & Unity 开发配置和注意事项
- 在OSX上开发UNITY本地插件的经验分享
- [Unity官方文档翻译]2D or 3D Projects Unity中2D和3D项目的区别
- [Unity官方文档翻译]Downloading and Installing Unity下载和安装unity教程
- Unity3D热更新<一> 学习Lua
- Unity从HelloWord开始
- Unity中ScrollRect锁定元素详述(二)
- Unity 通过计算定点绘制图形
- Unity 问题汇总
- Unit3D--人机交互入门
- Unity3D学习1——鼠标点击效果显示
- 【Unity】2.2 Unity编辑器中的常用菜单项