unity打包unity5 assetbundlee 怎么把 cs 文件也打包了

The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.原地址:http://blog.csdn.net/huang7jiao/article/details/
在移动开发中,手动控制资源的加载、释放和热更新,是很有必要的。
而Unity通过AssetBundle可以实现该需求,但是如果项目资源多起来的话一个个手动打包成AssetBundle则很麻烦。
而本文正为此提供一套一键打包的方案。
资源分类、加载和实例化过程:
分类资源:
先将游戏资源分类,这里说的分类不是按资源类型(声音、贴图等)来分,而是按照打包进同一个AssetBundle的资源来分。 一般游戏按照使用频率、游戏流程、资源大小来分到不同的AssetBundle中。
举个例子:一个跑酷游戏,可将资源分为: 开始界面,主界面,关卡一资源,关卡二资源,主界面和各关卡的共享资源(如角色服装),各关卡间的共享资源(如血条,金币)。注意这里说的资源是图片,模型,声音等一些体积较大的文件。
加载资源:
游戏流程中AssetBundle的加载及卸载:
将&场景内所有GameObject&变为Prefab并打打包成AssetBundle:
在上一步中,只是将资源打包成AssetBundle,而驱动游戏进行的游戏逻辑(场景上的GameObject)则没做处理。
这样的话会导致打包出来的游戏包重复包含资源(AssetBundle和场景GameObject引用的资源重复)。
所以我们需要将场景上的GameObject也一并打包成AssetBundle,在游戏真正运行时才加载该AssetBundle并实例化。
拿unity 2d例程(2DPlatformer)做说明,即将Scene里的所有文件变为一个GameMain.Prefab,并导出为AssetBundle。
用于在之后的游戏运行后加载并实例化。
那么上一步的流程将会变为:
标记项目资源:
分类加载的思路有了,现在只差一个自动将所有资源打包成AssetBundle方法。
我们需要借助Asset Labels(Unity的标签系统)。
思路是按资源的不同分类(前文提及的分类方式),来标记每个资源。
举个例子:
上面4个资源属于关卡1的资源,因此我将他们同标记为AsRes_Level1,
他们将会一起打入AsRes_Level1.assetbundle包中,以备游戏中加载。
需要注意的是,其中AsRes_是固定标识,以便打包脚本分辨。
用这种方法则可将游戏资源一一归类。
但是,我们还有一个麻烦,就是需要先将比较笨重的资源(图片,声音,模型)先打包,然后再将驱动逻辑(例如,前面说的GameMain.Prefab)打包,
只有按这样的顺序打包才能使驱动逻辑引用到之前的打包的美术声音资源。
解决方法也比较简单,将驱动逻辑标记为AsPack_即可。
OK,就这样将整个项目的资源标记好之后就可以进行一键打包了。
为了更好的说明,我利用Unity的2DPlatformer做了一个样板工程。
其中 Editor/ResPacker.cs 是打包脚本,会在菜单Assets下新建&Build All Assets To Bundle& ,用于一键打包。
_Loader/Test_Loader.unity 是测试场景,用于加载位于StreamingAssets下的AssetBundle,并实例化&驱动逻辑&(GameMain)。
在例程中有一个Bug,在编辑器中导入AssetBundle包的话,会使Sprite 上Sorting Layer变为Default,而导致图层混乱,而Build这个场景出来之后再运行则不会。
阅读(...) 评论()在unity中用DotNetZip打包assetbundle的问题?
在unity中用DotNetZip打包assetbundle,using (ZipFile zip = ZipFile.Read(strZipPath)) 读不出来!部分代码如下:using (ZipFile zip = ZipFile.Read(strZipPath))
Debug.Log("zip=" + zip.Name);
foreach (ZipEntry entry in zip)
if (string.IsNullOrEmpty(strUnZipPath))
strUnZipPath = strZipPath.Split('.').First();
Debug.Log("strUnZipPath=" + strUnZipPath);
entry.Extract(strUnZipPath, ExtractExistingFileAction.OverwriteSilently);//解压文件,覆盖
}在log中,没有显示Zip.name,感觉可能是strZipPath不对,这里我log出来的路径为:strZipPath = C:\Users\Administrator\AppData\LocalLow\DefaultCompany\Titan\Android\city.zip
你的路径,不应该是在工程目录下么?检查一下路径是否正确
已有帐号?
无法登录?
社交帐号登录<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&【Unity】Unity5版本的AssetBundle打包方案之打包Scene场景-爱编程
【Unity】Unity5版本的AssetBundle打包方案之打包Scene场景
using UnityE
using System.C
using UnityE
/// &summary&
/// 脚本位置:Editor文件夹下
/// 脚本功能:打包
/// &/summary&
public class CreateAssetBundle:Editor
// 打包unity场景文件
[MenuItem(&Assets/Build AssetBundle Scene&)]
static void MyBuild(){
// 需要打包的场景名字
string [] levels =
{&Assets/2.unity&};
// 注意这里【区别】通常我们打包,第2个参数都是指定文件夹目录,在此方法中,此参数表示具体【打包后文件的名字】
// 记得指定目标平台,不同平台的打包文件是不可以通用的。最后的BuildOptions要选择流格式
BuildPipeline.BuildPlayer(levels, Application.dataPath+&/Scene.unity3d&, BuildTarget.Android, BuildOptions.BuildAdditionalStreamedScenes);
// 刷新,可以直接在Unity工程中看见打包后的文件
AssetDatabase.Refresh();
using UnityE
using System.C
/// &summary&
/// 脚本位置:需要加载物体的场景中任意物体上
/// 脚本功能:加载物体
/// &/summary&
public class LoadAssetBundle : MonoBehaviour
void Start ()
// 下载压缩包,写出具体的名字
url = &file://& + Application.dataPath + &/Scene.unity3d&;
// unity预制体名字,即被打包的场景名字叫 2
assetname = &2&;
StartCoroutine (Download ());
IEnumerator Download ()
WWW www = new WWW (url);
if (www.error != null) {
Debug.Log (&下载失败&);
AssetBundle bundle = www.assetB
Application.LoadLevel (&2&);
print (&跳转场景&);
// AssetBundle.Unload(false),释放AssetBundle文件内存镜像,不销毁Load创建的Assets对象
// AssetBundle.Unload(true),释放AssetBundle文件内存镜像同时销毁所有已经Load的Assets内存镜像
bundle.Unload (false);
// 中断正在加载过程中的WWW
www.Dispose ();
版权所有 爱编程 (C) Copyright 2012. . All Rights Reserved.
闽ICP备号-3
微信扫一扫关注爱编程,每天为您推送一篇经典技术文章。

我要回帖

更多关于 unity3d assetbundle 的文章

 

随机推荐