美文网首页
2020年了,Unity能打微信小游戏包了吗?

2020年了,Unity能打微信小游戏包了吗?

作者: cocos游戏开发 | 来源:发表于2020-08-17 17:43 被阅读0次

    引言

    Unity什么时候能打微信小游戏包?或者说打包到H5平台?

    这个问题困扰了某些人很久,比如我……

    针对这个问题,Unity给的方案是:Project Tiny

    ### 1. 版本进度怎么样了?

    然而,距离上一次Unity大张旗鼓宣传Project Tiny,已经过去了大半年。

    最近Unity官方公众号又有一波宣传攻势。

    于是乎,我又上Unity官方论坛看了一下Unity Project Tiny项目,也就是Unity的H5版本:

    8个月快过去了,终于发布了0.28预览版。

    嗯……0.28……preview……

    好奇的我又看了一下开发文档中的版本历史,2019年12月底的版本是:0.20 preview……

    文档地址:https://docs.google.com/document/d/1A8hen2hLFY5FLkC5gd3JP2Z-IpHfnAX-CpYLK3aOdwA/edit

    不过,可以看到,疫情期间,Project Tiny团队还在以差不多每个月1-2个版本的速度推进。

    老实说,从程序员的角度,我也不知道到底算快还是慢。

    依稀记得,Unity花了整整一个2019年,把版本从0.1推进到0.2。

    那么,是不是说,从现在的进度来看,是不是今年只能推进到0.3?

    或者按照每个月2个小版本的速度,0.28 + 0.01 * 10 = 0.38?

    不不不,从版本号,我们没法直接推导出从0.28到1.0版本需要多长时间,毕竟版本推进并不是一个线性的过程。

    而版本号也不是一个简单进度条,版本0.28,真的并不表示进度28%……

    只能说Unity团队比较严谨……没有高估版本进度。

    但是,从市场的角度,可以说是很慢了吧……

    即使一年一次大宣传,距离下一次大版本宣传,也不到5个月了,年底是否真的有可以落地的版本?

    能否实现Unity说的“预计年底推出正式版”

    我其实是有点悲观。

    # 2. 现存Unity项目怎么办?

    但是,真正让我忐忑不安的是,另一个问题:现存Unity项目怎么办?

    从Unity Project Tiny的文档里透露出来的信息来看,Unity的目标是,对于任何一个Unity项目,只要它与新DOTS架构兼容,就可以与Project Tiny兼容。

    可以说是很负责任了。

    但是,

    换个说法就是,对于一个Unity项目,想要打包到H5平台运行,需要先保证它能够与新的DOTS架构兼容。

    再换个说法就是,对于现存的Unity项目,想要打包到H5平台上,需要看看全新的DOTS架构是否与现有的“旧”架构兼容。

    # 2.1. 什么是Hybrid?

    文档中提到了一个名词:DOTS Hybrid Unity

    这是一种混合编程模式,也就是,现有的旧Unity运行时与新DOTS在同一个项目里并存的一种模式。

    Unity的上一波宣传中,特意提到了这种方式:在现有的Unity项目中,能够直接使用DOTS的部分功能。

    事实上,由于当前DOTS缺少的功能还比较多,所以,稍微复杂一点的演示Demo都是以这种DOTS Hybrid方式实现的。

    Unity官方关于DOTS Hybrid的文档:

    https://docs.unity3d.com/Packages/com.unity.rendering.hybrid@latest

    文档也介绍了如何配置DOTS Hybrid模式:

    1). 方法1,在编辑器中通过一些设置,在编译时进行转换。

    2). 方法2,使用ConvertToEntity在运行时转换。

    image

    嗯……这个ConvertToEntity组件是怎么工作的呢?

    官方文档:https://docs.unity3d.com/Packages/com.unity.entities@0.13/api/Unity.Entities.ConvertToEntity.html

    Hybrid Renderer文档中透露出来的信息:

    1). Unity曾经想要另外做一个DOTS编辑器,现在放弃了。

    2). Unity DOTS将使用现有的基于GameObject的编辑器,来做DOTS工作流的一部分。

    简单的说,我们可以继续通过配置GameObject来实现DOTS的配置,而添加了ConvertToEntity组件的GameObject会在运行时自动被转换为Entity,就是DOTS架构的核心单元。

    参考教程:https://gametorrahod.com/game-object-conversion-and-subscene/

    这个组件看起来很简洁……似乎……很强大很智能……

    真的吗?

    也许吧。。。

    以下内容纯粹虚构,请勿当真:

    这样就可以了吗?会不会需要别的工作?

    其实吧,这个组件的功能,就是把GameObject中的各个组件,转换为数据。

    只有数据吗?

    对,只有数据。

    那我写在MonoBehavior中的那些代码呢?

    这个嘛,说来话长……

    首先,你要知道,DOTS中,Entity只是数据,所以它通常定义成struct,而不是class。

    其次,DOTS中,Entity的行为是在Entity System中进行控制的。

    最后,现有的MonoBehavior组件既包含了数据又包含了控制逻辑,所以才容易产生性能瓶颈。

    最最后,使用Entity和Entity System替换MonoBehavior,可以将性能提升到另一个层次。

    没有人会满足于对性能的追求,对吧?我们可不是牙膏厂。

    所以,付出一点点代价,比如把MonoBehavior的代码提出来,写成Entity System,这种小事情,没人会在意的,对吧。

    可是……

    可是…………

    可是………………

    # 3. 市场真的需要DOTS吗?

    什么?!

    你说现在的旧架构的性能已经满足了你的需求?!

    你说现在的硬件设备已经能够流畅运行别的引擎了?

    ……

    ……

    ……

    那么,问题来了,对于现有的旧Unity项目,

    • 如果不做任何转换,是否与DOTS兼容呢?

    • 如果不做任何修改,能否直接作为Hybrid项目运行,并打包到H5平台?

    • 如果不使用任何DOTS特性,打的H5包与现在的WebGL模式有什么区别吗?

    其实吧,

    H5市场需要的是一个打包工具,而Unity却决定重写一整套底层架构。

    我真的不知道,这到底是不是个好主意,不过,这个真的很程序员。

    # 4. 最后的声明

    为了避免抬杠,非官方的H5打包方式,其实一直都有。

    但是,我真的很希望官方出一个工具嘛。

    相关文章

      网友评论

          本文标题:2020年了,Unity能打微信小游戏包了吗?

          本文链接:https://www.haomeiwen.com/subject/qfaidktx.html