AssetBundle相关理解

来源:互联网 发布:数学英语词汇软件 编辑:程序博客网 时间:2024/05/17 00:54

AssetBundle相关内容:

1. 涉及到游戏的更新。

2. 它是lzma算法的一种压缩方式,跟zip等压缩包差不多,只不过是压缩的算法不太一。样,它跟文件的后缀名没有关系,比如test.u3d,test.unity

3. Unity4.3以后采用的依赖打包方式。

4. Unity4.3以前依赖需要自己管理。

5. 任何unity用到的材质,贴图,模型等资源都可以打包进去。

6. MmoRPG游戏因为涉及的资源非常多,所以一般会把资源以assetbundle的形式放在服务器上,客户端从服务器下载,然后去解压。

7. Resources.Load() api指的是unity自己帮我们把放在Resoures文件夹中的资源打成包,

那么这个包是不可拆分的,不能从服务器上下载下来,所以就需要我们自己去打包。然后去管理assetbundle资源。

 

关于这个模块涉及到的问题:

1. 关于AssetBundle怎样去打包?

2. AssetBundle怎么样加载?

3. AssetBundle怎么样管理?

 

资源怎么样管理?

考虑到团队成员水平的参差不齐,所以我们一般在项目中创建一个Art文件夹。

 

 

具体管理方式:

1. 按功能划分文件夹

2. 每一个文件夹大小 不要超过1M,小于1M,文件太多的话会影响到io的读写,大于1M文件太大,又会影响到下载时的等待时间,所以我管理的是1M

3. 如果文件大了,可以进行拆分成多个包处理。

4. UI流程,自己去查

 

 

U3D的打包流程?

1.先对资源作标记tag,界面右下角,如下图 ,可以自己设置名字和后缀。

 

2执行以下方法

 

/// <summary>

/// 注意:该类涉及到编辑器菜单,所以必须放在Editor文件夹下

/// </summary>

public class AssetBundleEditor :MonoBehaviour {

    [MenuItem("Tools/BuidleAssetBundle")]

    public static void BuildAssetBundle()

    {

        string outPath = Application.dataPath + "/AssetBundle";

        //采用以下api就可以打包了,当然涉及到平台的不同和路径的不同,还需要自己去封装,这里只是个例子

        BuildPipeline.BuildAssetBundles(outPath, 0,EditorUserBuildSettings.activeBuildTarget);

    }

}

3.执行完之后的结果

 

 

在游戏项目开发中,这个涉及到每个开发人员的使用,打包的资源也会很多,这样每次都设标签的操作很不方便,所以我们可以写一个AssetBundle打包的框架,方便上层人员的使用。

这里说一下assetbundle的特性

如果项目中资源对assetbundle标记有文件路径,打包的时候就会自动产生路径。注意:assetbundle的路径只支持小写

 

Build出来的

 

总结:

1. 输出的文件夹 bundle跟 源文件所在的位置没有关系,跟Name标记有关系。

2. 理想的打包流程:把要打包的资源放入到我们对应的文件夹中,就能打包出对应的文件夹和assetbundle

3. 为了方便管理,在打包资源的文件夹里面的assetbundle的标记必须统一成一样的。

原创粉丝点击