unity打包时 Resources文件夹下的unity5.6 资源打包 是用什么压缩式的?

【程序猿】Unity Resources资源打包以及加载(一)
一、 功能说明
实现Resources资源打包、加载
二、资源打包功能如何实现
第1步,在Unity编辑器中创建一个空的场景。
第2步在project文件管理器中创建Editor文件夹,并在之下创建一个CreateAssetBundle.cs脚本。CreateAssetBundle.cs用来打包文件
第3步,将要打包的项目的Resources资源整体拖拽到Project文件管理器中。
第4步,确定要打包的资源格式。
第5步,CreateAssetBundle.cs中规定了打包的文件格式以及生成版本号到version.txt文件中,可自定义添加。(第一次version为1只要以后version大于1不管文件有没有更改都下载。当然也可以规定某个模型更新 )格式规定代码如下所示 :
在使用中,可能会有更多的格式。根据需要添加即可。
using UnityE
using System.C
using UnityE
using System.IO;
using System.Collections.G
public class CreateAssetBundle : Editor
static void FindDependencies(string strPath , List strPathList)
if (strPathList.Contains(strPath))
strPathList.Add(strPath);
string[] strArrayDependencies = AssetDatabase.GetDependencies(strPathList[strPathList.Count - 1]);
foreach (var m in strArrayDependencies)
FindDependencies(m, strPathList);
[MenuItem("Custom Editor/Create AssetBunldes Main")]
static void CreateAssetBunldesMain()
WriteVersion();
Caching.CleanCache();
List strPathList = new List();
//获取在Project视图中选择的所有游戏对象
Object[] SelectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
//var game = Selection.gameO
foreach (var n in SelectedAsset)
Debug.Log(AssetDatabase.GetAssetOrScenePath(n));
FindDependencies(AssetDatabase.GetAssetOrScenePath(n),strPathList);
string targetPath = Application.dataPath + "/StreamingAssets";
if (!Directory.Exists(targetPath))
Directory.CreateDirectory(targetPath);
AssetBundleBuild[] abBuilds = new AssetBundleBuild[6];
List strPrefab = new List();
List strModel = new List();
List strImage = new List();
List strShader = new List();
List strOther = new List();
List strMaterials = new List();
foreach (var p in strPathList)
//strArraty[i] = AssetDatabase.GetAssetOrScenePath(SelectedAsset[i]);
string strCase = "null";
if (p.Contains("."))
strCase = p.Split('.')[1];
switch (strCase.ToLower())
case "prefab":
case "cs":
strPrefab.Add(p);
case "fbx":
strModel.Add(p);
case "shader":
strShader.Add(p);
case "mat":
strMaterials.Add(p);
case "png":
case "jpg":
case "tga":
case "psd":
strImage.Add(p);
strOther.Add(p);
abBuilds[0].assetNames = strPrefab.ToArray();
abBuilds[0].assetBundleName = "assetBundlePrefab";
abBuilds[1].assetNames = strModel.ToArray();
abBuilds[1].assetBundleName = "assetBundleModel";
abBuilds[2].assetNames = strImage.ToArray();
abBuilds[2].assetBundleName = "assetBundleImage";
abBuilds[3].assetNames = strShader.ToArray();
abBuilds[3].assetBundleName = "assetBundleShader";
abBuilds[4].assetNames = strMaterials.ToArray();
abBuilds[4].assetBundleName = "assetBundleMaterials";
abBuilds[5].assetNames = strOther.ToArray();
abBuilds[5].assetBundleName = "assetBundleOther";
BuildPipeline.BuildAssetBundles(targetPath, abBuilds, BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android);
////刷新编辑器
AssetDatabase.Refresh();
static void WriteVersion()
StreamWriter sw = new StreamWriter(Application.streamingAssetsPath+"/version.txt");
string w = "1";
sw.Write(w);
sw.Close();
立即阅读近期热文
厚积薄发 | 游戏引擎十年技术点滴
西川善司《神秘海域》的图形分析(上篇)
西川善司《神秘海域》的图形分析(下篇)
添加小编微信,发送“程序”,可享双重福利
1.加入GAD程序猿交流基地
获取行业干货资讯
观看大牛分享直播
2.直接领取60G独家程序资料库
腾讯内部分享、文章教程、视频教程等
↓长按添加小编GAD-沫沫↓
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
专业游戏开发社区
服务广大游戏开发者,为开发者们解决游戏开发中的难题
今日搜狐热点Unity中的特殊文件夹及脚本编译顺序 - 简书
Unity中的特殊文件夹及脚本编译顺序
本文章转自:
特殊文件夹
◆ Standard Assets--存放Unity的标准资产。(只能放在Assets根目录下,有且仅有一个)
◆ Pro Standard Assets--存放Unity的专业级标准资产。(只能放在Assets根目录下,有且仅有一个)
◆ ActionScript--存放Flash的ActionScript脚本。当游戏被导出为Flash格式时,这里的脚本会自动替换指定的C#脚本。
◆ Plugins--存放插件。该文件夹有很多用途,须详细了解可以参考官方文档。(只能放在Assets根目录下,有且仅有一个)
◇ Plugins/Android--存放Android插件,包括 .jar或XML文件等。
◇ Plugins/iOS--存放iOS插件,包括.a 或 .m、.mm文件等。
◆ Editor--存放编辑器脚本。该文件夹里的所有资源文件或脚本文件都不会被打包进发布包中,并且脚本也只能在编辑器中使用。(可以放在Assets根目录下,也可以放在其它子目录里,数量不限)
◆ Editor Default Resources--存放编辑器用到的资源,如图片、文本文件等。它里面的资源不会被打包进发布包中,我们可以通过EditorGUIUtility.Load方法读取该文件夹下的资源。(只能放在Assets根目录下,有且仅有一个)
◆ Resources--存放需要动态读取的资源。该文件夹下的资源不管你用不用,它都会被打包进发布包中。在打包前可以用AssetDatabase.MoveAsset方法把不必要的资源从文件夹中移出去;打完包后再把移出去的资源移回来。(可以放在Assets根目录下,也可以放在其它子目录里,数量不限)
◆ Gizmos--通常是存放TIF格式的图片,在OnDrawGizmos方法内使用Gizmos.DrawIcon将其画为图标在场景中显示。(只能放在Assets根目录下,有且仅有一个)
◆ WebPlayerTemplates--存放网页模板,其中每个模板均以一个自定义名称的子目录形式存放。如果WebPlayerTemplates文件夹在Assets根目录下,那么它里面的所有脚本都不会被编译。否则,WebPlayerTemplates文件夹存在于其它子目录中,那它里面的所有脚本都会被编译。
◆ StreamingAssets--存放媒体文件,如视频等。该文件夹下的资源会打包进发布包,它和Resources文件夹的区别是:Resources文件夹下的资源在打包时会被压缩,但StreamingAssets文件夹下的资源不会被压缩,而是原封不动的打包进发布包中。另外需要注意:此路径在PC/Mac电脑上可对文件实施“增删改查”等操作(在Windows8系统上进行增删等写入操作时报路径不允许访问),但在移动端只支持读取操作。(只能放在Assets根目录下,有且仅有一个)
脚本编译顺序阶段1:Standard Assets,Pro StandardAssets 和 Plugins文件夹里的运行时脚本被编译。
阶段2:Standard Assets/Editor,ProStandard Assets/Editor 和 Plugins/Editor文件夹里的编辑器脚本被编译。
阶段3:所有不在Editor文件夹中的脚本被编译。
阶段4:剩下的脚本(即在Editor文件夹中的脚本)被编译。3202人阅读
Unity3D(49)
原文:/index.php/Special_Folder_Names_in_your_Assets_Folder
1.隐藏文件夹
以.开头的文件夹会被Unity忽略。在这种文件夹中的资源不会被导入,脚本不会被编译。也不会出现在Project视图中。
2.Standard Assets
在这个文件夹中的脚本最先被编译。
这个文件夹中的脚本会被导出到Assembly-CSharp-firstpass, Assembly-UnityScript-firstpass 或 Assembly-Boo-firstpass项目中,依语言而定。参考&。在这个文件夹中的脚本比其他脚本都要先编译。将脚本放在这个文件夹里,就可以用C#脚本来访问js脚本或其他语言的脚本。
3.Pro Standard Assets
跟Standard Assets相同,只不过里面的文件是给Pro版本的Unity使用的。
以Editor命名的文件夹允许其中的脚本访问Unity Editor的API。如果脚本中使用了在UnityEditor命名空间中的类或方法,它必须被放在名为Editor的文件夹中。Editor文件夹中的脚本不会在build时被包含。
在项目中可以有多个Editor文件夹。
注意:如果在普通的文件夹下,Editor文件夹可以处于目录的任何层级。如果在特殊文件夹下,那Editor文件夹必须是特殊文件夹的直接子目录。
Plugins文件夹用来放native插件。它们会被自动包含进build中去。注意这个文件夹只能是Assets文件夹的直接子目录。
在Windows平台下,native 插件是dll文件;Mac OS X下,是bundle文件;Linux下,是.so文件。
跟Standard Assets一样,这里的脚本会更早的编译,允许它们被之外的脚本访问。
5.1.Plugins/x86
如果为32bit或64bit平台创建游戏,那么这个文件夹下的native plugin文件会被自动的包含在游戏build中。如果这个文件夹不存在,则Unity会查找Plugins文件夹下的native pluglins。
5.2.Plugins/x86_64
如果为32bit或64bit平台创建游戏,那么这个文件夹下的native plugin文件会被自动的包含在游戏build中。如果这个文件夹不存在,则Unity会查找Plugins文件夹下的native pluglins。
如果要创建universal build,建议你同时使用这两个文件夹。然后将32bit和64bit的native plugins放进相应的文件夹中。
5.3.Plugins/Android
在这个文件夹里放入Java.jar文件。用于java语言的plugins。.so文件也会被包含进来。参考
5.4.Plugins/iOS
A limited, simple way to automatically add (as symbolic links) any .a, .m, .mm, .c, or .cpp files into the generated Xcode project. See
If you need more control how to automatically add files to the Xcode project, you should make use of the PostprocessBuildPlayer feature. Doing so does not require you to place such files in the Plugins/iOS folder. See
6.Resources
Resources文件夹允许你在脚本中通过文件路径和名称来访问资源。但还是推荐使用直接引用来访问资源。
放在这一文件夹的资源永远被包含进build中,即使它没有被使用。因为Unity无法判断脚本有没有访问了其中的资源。
项目中可以有多个Resources文件夹,因此不建议在多个文件夹中放同名的资源。
一旦build游戏,Resources文件夹中的所有资源被打包进游戏存放资源的archive中。这样在游戏的build中就不存在Resources文件夹了。即使脚本中仍然使用了资源在项目中的路径。参考&
注意:当资源作为脚本变量被访问时,这些资源在脚本被实例化后就被加载进内存。如果资源太大,你可能不希望它被这样加载。那么你可以将这些大资源放进Resources文件夹中,通过Resources.Load来加载。当不再使用这些资源了,可以通过Destroy物体,再调用Resources.UnloadUnusedAssets来释放内存。
7.Editor Default Resources
这是为editor 脚本使用的文件夹。
Gizmos文件夹存放用Gizmos.DrawIcon方法使用的贴图、图标资源。放在Gizmos文件夹中的贴图资源可以直接通过名称使用,可以被Editor作为gizmo画在屏幕上。
9.WebPlayerTemplates
用来替换web build的默认网页。这个文件夹中的脚本都不会被编译。这个文件夹必须作为Assets文件夹的直接子目录。
10.StreamingAssets
这里的文件会被拷贝到build文件夹中,不会修改(移动和网页版不同,他们会被嵌入到最终build文件中)。它们的路径会因平台而有差异,但都可以通过Application.streamingAssetsPath来访问。
参考文献:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:296640次
积分:3440
积分:3440
排名:第9671名
转载:311篇
评论:11条
(2)(1)(3)(2)(5)(1)(4)(9)(8)(12)(4)(12)(6)(9)(10)(20)(10)(16)(27)(9)(30)(30)(34)(41)(3)(1)(4)(2)

我要回帖

更多关于 unity5.6 资源打包 的文章

 

随机推荐