1.写在前面
Unity3D是由Unity Technologies开发的一个让你轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。
Unity3D,简称U3D,是德国UnityTechnologies公司所开发的中端游戏引擎。
U3D相对于虚幻3引擎,只能算是小弟级的游戏引擎,但是它在游戏制作上的高效率,以及对应多平台的游戏开发,使得它在国外的独立游戏制作小组中具有很高的人气。
U3D的免费版和专业版的区别主要在于画面滤镜和底层类库的使用权限,U3D免费版也是能制作完整游戏的,并且可以发布PC,MAC和Web平台的游戏,移动平台(IOS,Android)和次世代游戏机平台(PS3,XBOX360,Wii)则需要另外的授权。
*Unity3D的开发公司和Adobe公司合作之后,从3.5版本起,U3D增加了Flash的发布功能(需另外授权)。
U3D借鉴了虚幻引擎和一些大型三维动画软件的操作理念,因此很容易入门,并且它和其他软件的协作会很便捷。U3D的软件界面布局很完善,用户可以快速的选择一个适合自己开发习惯的窗口排序。
* U3D目前还无法改变模型的轴心点,因此需要在三维软件中事先完成设置。
*U3D虽然单位是米,但是它默认的ScaleFactor参数是0.01,也就是对应的是maya中厘米;如果在Maya中使用了米为单位,导入U3D中时,还需要手动将ScaleFactor设置为1。
*U3D3.X还无法对多个物体同时赋予相同的材质,因此在导入U3D前,我们应该在Maya中将材质分类好;还要注意模型面的法线朝向,尽量不要出现反面。
Skybox天空盒的创建。游戏中的天空,就是一个包裹场景的几何体贴图。对于游戏引擎,是六张覆盖立方体六个面的无缝天空纹理。U3D的天空盒需要和摄像机或者在渲染设置中进行关联。
*渲染设置中加入天空材质,可以直接在场景中看到效果;摄像机中连接天空盒,只有执行游戏渲染时,才会在特定摄像机中看到。
U3D中有四种类型的灯光:PointLight,Spotlight,DirectionalLight,AreaLight,AmbientLight。其中,AmbientLight不是独立的灯光元素,而是位于渲染设置中,可对场景中的背光进行色彩调节(通常是冷色系),用于模拟环境反射光(多为天光)。方向光常用于模拟阳光,灯光的所在位置不影响照明效果,因为它是基于朝向的。
目前U3D的光照系统和场景构建元素还没有UDK(虚幻引擎开发套件)那么丰富,因此图形的渲染效果上自然没有UDK出众,不过它已经足够用来开发画面强劲的次世代游戏,移动平台和网络游戏更不在话下。
renderPass渲染通道。在U3D中有三种重要的渲染通道,都是基于灯光材质产生的。目前U3D还没有实现类似maya或者UDK那样可对材质着色通道进行纹理动画连接的功能,因此用户需要自行编写材质,这在一定程度上限制了创意的发挥。
lightmass质量的设置直接决定着游戏品质。场景中的灯光和阴影是实时计算的,这不会应用于游戏中,游戏会通过灯光贴图和阴影贴图来提高画面的运行效率。对于场景中静止的物体,我们可以采用各种全局光照明来将灯光效果烘焙到模型对应的贴图中,这有两种方法:一种是在绘制模型贴图时,通过三维软件的全局光系统(如FG最终聚集,GI全局照明),将灯光效果烘焙;另外就是直接在游戏引擎中烘焙(依赖于引擎的功能)。U3D的灯光系统并没有UDK那么强悍,尤其在全局照明效果上。
OcclusionCulling是U3D中用于优化场景显示效率的一个功能,可以很大的降低游戏对系统资源的消耗。它的原理是不绘制在摄像机范围内看不到的被遮挡物体。
*U3D可以针对web和移动平台做到很大的资源优化,这点是UDK不能比的。
U3D支持多种语言编写脚本:C#,JavaScript,Boo。JavaScript脚本较容易上手,常作为初学者或JavaScript编程人员的首选,不过从长远的扩展来看,C#则是用户最佳的选择方案。当然,你也可以在一个游戏设计过程中,同时使用几种语言的脚本进行组合,因为U3D最终都会将这些语言转为它内置的编译语言。
*JavaScript不是Java。
【总结】
Unity3D具有广阔的发展前景:通用的软件操作规范,高效的开发速度,多平台的支持,以及广泛的编程语言的兼容。