目录
介绍
安装
使用
创建实体组
创建实体
创建自定义组件
创建预设
项目资源的生成报告
和常规的Unity开发模式的差别
脚本
Unity 2018.3.0发布之后我便迫不及待的体验了一把Tiny Mode。那什么是Tiny Mode呢?
Unity的Tiny Mode提供了一个全新特性的运行时,让我们可以在UnityEditor中创建小型轻量级HTML 5游戏和应用程序。并且Tiny Mode还为我们提供了一个专业的,高度模块化的构建工具,使我们能够很好地控制文件大小,在移动设备上的启动速度和运行速度更快。
《Tiny Arms Revenge》是一款使用Tiny Mode创建的即时小游戏,首次传输会下载969KB的压缩数据来启动游戏,包括:162KB为引擎数据,199KB为游戏代码,597KB为美术资源,在游戏运行时会额外加载861KB的音频文件,最终整个项目的大小为1.8MB。(引自官方数据)
注意:如果安装Tiny Mode后会报错是因为Unity默认的Scripting Runtime Version是.Net 3.5 Equivalent,我们改为.Net 4.x Equivalent即可,貌似Unity 2018.3.0之后将默认.Net 4.x Equivalent了。
安装完毕之后,我们可以通过菜单栏Tiny > File > New Project创建新的Tiny Mode项目,这时候Unity便会自动切换常规的开发模式到Tiny Mode的开发模式。
当我们创建完毕之后,系统会自动帮我们创建三个文件夹和一个Tiny Mode项目,三个文件夹分别存放组件,实体,系统的脚本。
另外,我们可以选中该项目查看相关的设置信息,包括模块和配置,也可以点击Open Settings打开更多设置,这里的Build按钮相当于播放按钮。
创建实体组的方式有很多种,常用的创建方式就是在Hierarchy窗口点击Create>Create EntityGroup,并且将默认为启动的实体组
创建实体的方式和创建实体组一样,我们可以创建各种类型的实体,另外我们也可以从项目里面拖拽实体进去,但是只能用兼容的组件,不兼容的组件是不允许放进去的,比如灯光。
除了相机渲染,碰撞,音频,粒子,UI等内置组件之外,我们还可以创建自定义组件。点击Create > Tiny > Component,系统便会自动在当前项目的Components文件夹下创建一个自定义的组件。
创建完自定义组件之后,我们可以在Documentation上面添加注释,我们还要为其添加上字段,点击Add new Field按钮,然后我们可以添加内置的字段,比如整型,浮点型,布尔型和字符串,也可以添加音频和物理模块。
当我们创建完一个实体之后,还可以把它设置成预设,右键实体然后选中Make Prefab,或者直接拖拽到项目,但是我发现这两种方式产生的预设图标是相反的,不知道是不是不能这样操作还是BUG?
项目Build生成完之后,我们在设置窗口中可以预览项目资源的生成报告。我们可以通过报告找出哪些资源所占项目的大小,然后进行优化,比如减少纹理大小和更改压缩格式设置等等。
报告分为三部分,分别为运行时,代码,资源。
由于篇幅有限,我就挑这些比较重要的内容讲讲,其他设置就不一一说明了。
由于Tiny Mode和常规的Unity运行时不一样,所以在使用上存在一些差别。
从技术角度上来看,这是他们两者之间最明显的区别了,ECS模式使得Tiny Mode可以实现很高的运行性能,尤其是在移动设备上更显得非常重要。ECS模式是Tiny Mode的基础,我们必须用ECS的架构来创建我们游戏或者应用,所以这也是新手和习惯于面向对象模式的开发者需要克服的难点,因为ECS是面向数据的。
在iPhone 6S上,Tiny Mode可以显示的移动动画精灵数量是其它面向Web的2D引擎的3~4倍,同时还能保持60 帧每秒的运行速度。在类似设备上,需要的引擎加载时间约350-600毫秒。(引自官方数据)
正常来说,我们一个Unity工程只会存在一个项目,而Tiny Mode非常的特殊,一个Unity工程可以包含多个Tiny Mode项目,Tiny Mode项目由一个带有.utproject文件名后缀的文件表示,里面包含了使用哪些模块的信息以及与Tiny Mode相关的各种设置。
由于使用了ECS模式,游戏对象将不再是GameObjects而是实体(Entities)和实体组(Entity Groups)。
由于使用了ECS模式,组件也变成了实体的组件。虽然不一样了,但是他们之间很类似,内置了很多组件,比如相机渲染,碰撞,音频,粒子,UI等等,我们也可以自己创建自定义组件,但是实体的组件只能包含数据不能包含逻辑,这遵循了ECS模式。
Tiny Mode不再使用常规场景(Scenes),而是使用了实体组(Entity Groups)。实体组的层次结构类似于场景,但是实体组只能包含实体,不能包含GameObjects。我们也可以像编辑场景一样,在Hierarchy窗口编辑多个实体组,在运行时加载和卸载。实体组的由一个带有.utdata文件名后缀的文件表示,里面包含了各种实体以及实体上的各种组件的信息。
另外,我们还可以设置启动的实体组。
Tiny Mode使用了不同于常规组件的组件族(Component Families)概念,比如一个Transform的组件族就包含position,rotation,scale。
当有一个需求只是移动而已,那么我们便可以只使用position的组件,而忽略rotation组件和scale组件,减少我们项目不必要的功能,令项目达到最小化。
我们可以在Inspector检视窗口中设置显示组件族。
和常规的Unity开发模式不一样的还有播放按钮,在Tiny Mode中我们不能通过点击播放按钮来运行游戏,点击播放按钮将会执行Build相同的操作,并且在系统默认浏览器中运行。
Build完之后会生成HTML 5游戏。
目前Tiny Mode使用的脚本是Typescript,但是在预览阶段将会替换为C#,因为Unity的C#可以带来更高的性能,比如Burst编译器的开发。所以在这里我将不对脚本做过多的说明,大家可以去看看我之前写的关于ECS的文章。
Unity2018新功能之Entity Component System(ECS)一
Unity2018新功能之Entity Component System(ECS)二
注意:安装完Tiny Mode之后有些安全软件会判定TinyToolsManager-win.exe为木马,记得为其添加到信任程序。