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就像是Maya的软件操作,3dsMax的功能执行,C4D的菜单管理。
新建一个工程目录时,为了提高场景载入速度,U3D默认是不加载资源包的。因此用户可根据自己的工程所需,选择相应的功能包。例如内置的角色控制系统,地形组件,天空盒,画面滤镜,脚本集等。
U3D的工程目录作为资源存放的系统文件夹,可随时更新和调用,相对于UDK必须提前导入引擎包的形式,U3D更为人性化。我们可以在U3D的工程目录管理窗口中直接建立文件夹,用来对资源进行存放和分类,例如:scripts(脚本),materials(材质),meshes(网格),scenes(场景),textures(贴图)等。U3D的文件会自动排列,为了保持我们建立的目录次序,我们可以在文件名前加入下划线,如:_ script,_material。
U3D可以建立一些基本的几何体,但是你不能执行建模操作,只能对他们进行一些简单的整体变形,所以多数的图形元素,我们需要从外部导入。虽然U3D中可以创建并绘制地形,不过若非很平坦的地形,对于起伏强烈的山地,使用maya创建会更理想一些,因为涉及到贴图拉伸的问题。
* U3D目前还无法改变模型的轴心点,因此需要在三维软件中事先完成设置。
U3D的场景单位是米,而maya是厘米,因此软件的数值上maya需要设定为100倍,才能和引擎中的场景比例匹配。例如,一个引擎中1.7M高的角色,在maya中的高度应该是170单位(厘米)--也可以在导出FBX文件的时候再设置单位,或者在U3D中调整FBX文件的ScaleFactor属性。当然,用户也可以自行更改maya的默认单位,不过个人不推荐那么做,因为除了动力学方面的影响,建模时的一些默认数值将会变得巨大(例如Bevel倒角功能)。
*U3D虽然单位是米,但是它默认的ScaleFactor参数是0.01,也就是对应的是maya中厘米;如果在Maya中使用了米为单位,导入U3D中时,还需要手动将ScaleFactor设置为1。
虽然U3D支持导入Maya特有的ma,mb或者3dsMax的Max格式文件,但是读取会很慢,因此最适合U3D的外部导入3D文件格式是FBX。当将FBX文件放于U3D工程目录时,U3D会自动读取FBX中包含的模型材质,并归于一个独立的文件夹Materials中。要注意,在U3D中拖拽贴图到材质球和点击材质球贴图方框内的select按钮是不一样的,前者会不断的生成独立的纹理增加文件量,而后者则是共用一个纹理。
*U3D3.X还无法对多个物体同时赋予相同的材质,因此在导入U3D前,我们应该在Maya中将材质分类好;还要注意模型面的法线朝向,尽量不要出现反面。
提示:Unity4.X版本之后可对多个物体同时赋予材质。
当把prefabs预置物放入场景中,会自动形成一个类似maya渲染代理一样的几何体,修改这个几何体的属性后,点击Revert可以返回初始状态;如果点击Apply,会直接应用到工程目录的prefabs中,所有场景中的prefabs都会同时改变,因此要慎用。

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具有广阔的发展前景:通用的软件操作规范,高效的开发速度,多平台的支持,以及广泛的编程语言的兼容。

游戏世界之Unity3D的基础认识的更多相关文章

  1. Unity3D入门基础之游戏对象 (GameObject) 和组件 (Component) 的关系

    原文出处:http://edu.china.unity3d.com/learning_document/getData?file=/Manual/TheGameObject-ComponentRela ...

  2. Unity3d ngui基础教程

    Unity3d ngui基础教程 NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a N ...

  3. Unity3D ShaderLab 基础的高光实现

    Unity3D ShaderLab 基础的高光实现 关于高光: 在一个物体表面的高光属性就是为了描述它是如何表现光泽.这种类型的效果在着色器的世界中通常称为视点相关效果. 之所以这样说,是因为为了实现 ...

  4. 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍

    在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...

  5. [置顶] cocos2d-x 3.0游戏开发xcode5帅印博客教学 003.[HoldTail]游戏世界以及背景画面

    cocos2d-x 3.0游戏开发xcode5帅印博客教学 003.[HoldTail]游戏世界以及背景画面 写给大家的前言,在学习cocos2d-x的时候自己走了很多的弯路,也遇到了很多很多问题,不 ...

  6. 移动游戏ui设计(二)--游戏世界的基本法则

    游戏世界的基本法则游戏体验的层次感很重要,制作一款趣味性强,宗旨明确的游戏并不简单. l  风格统一性:要先明白游戏的game genres,因为游戏类型与风格密切联系.常见游戏类型有:动作类.冒险类 ...

  7. unity3d 给游戏添加音源 Unity3d adds a sound source to the game

    unity3d 给游戏添加音源 Unity3d adds a sound source to the game   作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:3131345 ...

  8. Cocos2d-js官方完整项目教程翻译:六、添加Chipmunk物理引擎在我们的游戏世界里

    添加Chipmunk物理引擎在我们的游戏世界里         一.简介                   cocos2d JS能给我们力量来创造令人印象深刻的游戏世界.但缺乏某种现实.       ...

  9. Unity 如何在窗口大小可以随意改变的情况下让游戏世界完整的显示在镜头中

    当我们开发游戏时,如果是开发手机游戏,屏幕窗口的比例是固定的,不会说在运行时改变的. 但是,PC端的游戏就不一定,我希望它能被用户随意拉扯,但完整的内容还是能显示出来,这里我直接放例子: 请注意黑色的 ...

随机推荐

  1. 关于nginx的限速模块

    nginx 使用 ngx_http_limit_req_module和ngx_http_limit_conn_module 来限制对资源的请求 这种方法,对于CC攻击(Challenge Collap ...

  2. Ubuntu,QT5连接MySQL

    用QT连接MySQL需要共享库 libqsqlmysql.so的驱动,路径在plugin/sqldrivers目录下,乍看已经可用了,其实不然. 用ldd命令分析一下,libmysqlclient_r ...

  3. 设计模式C#实现(一)——模板方法模式

    模板方法模式——在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重写定义算法中的某些步骤. 假如我们有两种咖啡因饮料:茶和咖啡.茶的制作过程为: ...

  4. 原始的2文件的makefile错误

    从来没系统的看过makefile文档,平时属于复制模板,用完即忘,下午尝试按自己的理解写一个最简单的makefile,含2个.c文件,1个.h文件,费了个把小时,参考别人的文章才弄出来,特记录. ma ...

  5. 随机序列生成算法---生成前N个整数的一组随机序列

    问题描述: 给定输入N,生成从1开始的:1,2,3,4,......N 一组随机序列,序列中的数不能重复出现. 比如:N=5,合法的随机序列为{4,3,1,5,2} .{3,1,4,2,5}……非法的 ...

  6. 【Android UI设计与开发】1.引导界面(一)ViewPager介绍和简单实现

    1.ViewPager 实现效果图 2.ViewPager 实现功能 ViewPager类提供了多界面切换的新效果,新效果有如下特征: <1>当前显示一组界面中的其中一个界面: <2 ...

  7. 怎样快速学会ZBrush 中的移动笔刷的运用

    本篇视频教程,进入ZBrush®最精彩章节,雕刻前我们需要认识的雕刻工具-笔刷.zbrush自带了多种笔刷供大家选择和使用,掌握和用好这些笔刷将让我们的雕刻工作更加自由.本课的内容将主要向大家介绍最基 ...

  8. POJ 2449 Remmarguts' Date --K短路

    题意就是要求第K短的路的长度(S->T). 对于K短路,朴素想法是bfs,使用优先队列从源点s进行bfs,当第K次遍历到T的时候,就是K短路的长度. 但是这种方法效率太低,会扩展出很多状态,所以 ...

  9. java 8-7 接口

    1. 接口的特点: A:接口用关键字interface表示 interface 接口名 {} B:类实现接口用implements表示 class 类名 implements 接口名 {} C:接口不 ...

  10. 使用PDO进行sql的预处理和操作结果集