Unity的动态下载关卡与动态下载资源

    动态下载关卡是很多web游戏必备的内容,玩多少下多少是合理的解决方案。

    这里首先要解决的就是如果制作用于下载的资源。为此,Unity提供了BuildPipeLine,这是一个编辑器类,因此只能放于Editor目录下,他主要提供2个功能,一个是BuildPlayer,一个是BuildAssetBundle。

    对于第一个,这里要做一些解释,虽然不是官方的,但是我是这么认为的,如果大家有什么问题可以探讨。这里的Player其实就是各个平台的版本的意思。 Unity本身包含了虚拟机,他更像一个播放器,播放你在编辑器中创作的各个关卡。如果手工通过编辑器里面的File->BuildSettings 里面有个PlayerSetting,就是对你要生成的这个“播放器”的各种配置。

    通过BuildPipeLine的BuildPlayer,我们也可以通过脚本来生成这个"播放器"。这个函数有一个option,用来设置如何build这个Player的。其中有一个是 BuildOptions.BuildAdditionalStreamedScenes ,如果BuildOptions里面设置了这个参数,那么生成的结果将不是一个传统的Player,而是一个可以用来在运行时动态加载的关卡文件。在运行时通过WWW类来加载这个关卡资源。

    将关卡生成额外的资源这个方法在传统的WebPlayer是可以的,但是当目标设置为iPhone的时候,这个函数就完全不工作了,至少在Unity3D 3.3.04f ios pro上完全没效果。不知道是bug还是这个方式就不适用于iOS平台。如果强行在iOS上载入其他Target做出来的关卡,会在运行时报错。但是可悲的是,官方并没有说道这种方式不能用于iOS平台。起码在相关的文档里面,他没明确表示不能用于iOS。这无疑掐死了在iOS平台上动态下载关卡的想法。

    没关系,还有动态下载资源。BuildPipeLine提供的另外一个函数 BuildAssetBundle 用于将编辑器中的任何非关卡资源创建为一个资源文件(使用lzma方式做了压缩,容量有保障)然后可以通过WWW类在运行时加载。这个也是Unity在iOS平台上推荐使用的方式。对于关卡,我们也可以将一个关卡里面所有的内容的打包成一个asset文件,然后下载就行了。这样,也就解决了之前的那个问题。

    具体的demo可以在 http://unity3d.com/support/resources/example-projects/assetbundles.html找到,而BuildPipeLine相关的信息也可以在http://unity3d.com/support/documentation/ScriptReference/BuildPipeline.html 上找到。

     虽然使用第二种方式可以解决下载关卡的问题,但是关卡的RenderSettings依然是和Unity Scene紧密联系的,这个就需要注意将这些信息也输出到某一个Prefabs的脚本上面。最后希望unity早日能解决这个问题,避免开发人员通过这么扭曲的方式在iOS平台上来实现动态关卡下载。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值