在Unity中使用AssetBundle,第1张

我们想要在游戏中动态的加载我们的资源,可以使用AssetBundle的方式或者是ResourcesLoad的方式。

那么如何使用AssetBundle呢

我们首先需要对我们的编辑器做一些小小的处理

1在Unity中增加一个打bundle的操作按钮

在项目的Assets同级目录下创建一个Editor的文件,然后在新建一个脚本文件

引用官方的话

//Create a folder (right click in the Assets folder and go to Create>Folder), and name it “Editor” if it doesn’t already exist

//Place this script in the Editor folder

要把这个脚本放到Editor文件里才能正确运行 否则会报错 提示命名空间不正确。

这样我们的打包按钮就加好了,只要点击操作就会走这个静态方法(BulidAssetBundle)进行打包。

其中打包主要是调用了BulidPipelineBuildAssetBundles这个方法。

BulidPipelineBuildAssetBundles主要使用三个参数来完成打包:

第一个是打包后的包体存放路径。

第二个是打包规则。

第三个是目标操作系统。

第二个参数打包规则可以分为很多

//官方解释地址

[ https://docsunity3dcom/ScriptReference/BuildAssetBundleOptionshtml]

第三个参数是使用的目标操作系统

下面还有很多没有截图全,有Android和ios。

那么assetBundle是如何在我们整个项目中区分什么资源需要打包的呢?

其实是通过标签来做到的

这样打出来的bundle都是modplayer

2查看我们打好的bundle

当我们正确打包好bundle后会在制定好的路径里看到我们打好的包

其中我们可以通过查看manifest文件来得知里面包含了什么资源

3加载我们已经打好的bundle

31 使用本地文件加载的方式 AssetBundleLoadFromFile

32 使用内存加载的方式 AssetBundleLoadFromMemory

33 使用内存异步加载的方式 AssetBundleLoadFromMemoryAsync

4卸载我们加载上游戏的bundle

AssetBundleUnloadAllAssetBundles,当我们设置为

AssetBundleUnloadAllAssetBundles(true)的时候,就会把我们已经引用的bundle的资源都卸载掉,

如果是false的话就保留引用部分。例如下图:

最近被一个问题纠缠了好久,终于找到解决办法,这里做个记录。

我们做的一款游戏在编辑器里跑的好好的,一打包的手机上就各种崩溃;

而且是不确定什么时候出现,用logcat查看了系统日志,就看到是异常地址访问的log,没有什么有价值的信息。

重复试了好多次之后,发现每次进一个测试关卡的时候必闪退,于是一路上加日志,希望能知道是哪一句导致程序崩溃。

加到最后,场景加载完了,一切都正常。可以推断加载场景过程没问题,应该是在某一个组件脚本的update里面出问题的。

这下线索又断了,因为挂update的组件太多,而且不知道有哪些组件运行;这里就想到一个想法,我们以后的代码应该都由程序自己去调用update,

不要直接用u3d的update,这样我们可以很容易的知道哪些代码在运行,而且是可以保证调用次序的。

接着想了个办法,就是进场景后,逐个把有update的函数禁用,发现某个组件禁用后就不闪退了,于是问题定位到这个组件的update函数。

通过逐条的增加日志,最终定位到一个空引用访问上,导致程序在安卓机上闪退!怀疑是安卓sdk在运行时的jit直接变成了机器指令,导致可能的空异常。

这个问题让我很惊讶,原来以为会抛出空引用异常,没想到很c#的空指针访问一样会导致进程崩溃。于是组织大家把所有可能为空的地方排查可一遍。

另外在编辑器里没问题,是因为编辑器里加载资源是同步加载的,所以加载完直接使用加载后的对象是没问题的;

但是在手机上要从assertbundle中加载,使用了异步过程,会导致后续的访问可能存在访问空异常;

于是把编辑器里的加载也改成异步加载,编辑器中就能跟手机上一样的加载过程,尽量暴露手机上运行可能出现的问题

是否实际打包测试过,editor中异步加载卡顿,不代表打包后也卡,以打包后运行效果为准;

是否错误地在同一帧中等待op为true后才向后执行?应在协程中每帧判断op是否为true,直至完成;

Unity是一款世界级的跨平台游戏开发引擎,自2012年进入中国以来,越来越受到游戏开发者的青睐。目前,在国内Unity3D制作和专业开发人才面临着巨大的市场需求,并随着移动互联网的发展缺口逐年增大。

因此,Unity3D培训机构也如雨后春笋一般兴起。下面来简单分享一下关于Unity3D就业前景问题。

从动画和游戏的发展前景看,实现效果上开始从平面向3D转变。在众多引擎开发平台中,Unity3D异军突起。但是,目前国内Unity3D高级开发工程师不足万人,而市场需求约一百万人,严重供不应求。

以熟悉Unity3D游戏技术的游戏开发者为例,一年以上开发经验的人员一般待遇都会在10k左右,高级人才甚至达到20K-25K,即便如此,想要招聘到这样的人才真是可遇不可求。

职责:

1、负责客户端架构设计、模块划分、编辑器规划、引擎维护与人员分工;

2、负责游戏客户端与公司技术平台的整合;

3、协调与服务器端、策划、美术和公司其他技术支持部门之间的关系;

4、对客户端质量负全责。

5、监控任务进度和质量,确保游戏最终成功上市。

游戏开发工程师当然是有前景的啦。游戏行业发展的很快。在一个高速发展的行业当中容易赚到钱,容易有发展,但是具体到个人能力,必须突出,才会有发展。

一个行业发展得快,一个职业被看好,你得具备相当的能力才可以。

比如,做程序员很赚钱,但有的人做的不好,就赚不到钱,乃至被淘汰出局。

你好我是啊亮闯江湖,我的回答,希望可以帮到你

游戏开发工程师不仅在薪金待遇上比在传统高科技产业上具有优势,同时择业面广泛也是吸引众多求职者参加职业培训的因素之一。如学习游戏程序开发,将来可在游戏企业、通讯企业、IT企业担任网络游戏/网站开发/FLASH/C++程序师,3DAnimation设计师、客户端软件工程师、服务器端软件工程师等;可以说,游戏开发工程师的职业前景、就业前途非常看好!

游戏开发工程师的职业前景如何X

我国著名的游戏公司盛大网络人力资源负责人说过,盛大目前最缺乏的有经验的游戏开发人员,特别是拥有项目操作、项目管理经验的高端游戏专业人才。九城、网易、金山等游戏巨头也表达了类似的观点。目前游戏产业人才缺口高达60万,中高级人才更是紧缺,而需求量最大的是经验丰富的专业设计、开发人才。

现在游戏设计开发专业发展很迅速,相比其他行业在薪资和发展空间方面有着绝对的优势,所以从事软件开发方面的工作可选择的范围很大,游戏行业的发展使得游戏人才的就业前景看好,而且较其他行业相比游戏设计开发行业整体薪酬水平保持持续增长势头,都能获得很高的薪酬待遇和升职空间。到2012年,行业的年均薪酬水平有望超过12万元,尤其是部门经理以上岗位的薪酬曲线提升幅度将会继续加大。

完美空间北京中关村校区游戏动漫学院长期以来面向社会招开游戏开发培训班、游戏制作培训班。中国数字娱乐职业教育第一品牌为你打造动漫游戏行业高薪白领新通道。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 在Unity中使用AssetBundle

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情