大家好,又见面了,我是你们的朋友全栈君。
0. 目录
1. 简要介绍
Unity3D软件是由Unity Technologies公司提供的综合开发环境,主要面向游戏开发人员、虚拟现实设计师等,可用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的多媒体内容,并支持这些内容在Windows、iOS、Android等多种平台的发布,功能非常强大。
Unity3D软件分为Free版和Pro版,前者在功能上要弱于后者(比如前者不支持LOD等,具体区别参见这里),对于后者还提供全功能的30天试用版。目前Unity3D软件的最新版本是4.3.2,下载地址在这里。
Unity3D软件集成了专业的渲染引擎和“所见即所得”的开发编辑界面,可快速创建具有强大视听效果的交互式3D内容,并支持3ds max、maya等多种三维建模软件所制作的物件模型(以资源形式导入并使用)。脚本编程基于Mono技术,可使用JavaScript、C#或Boo语言编写,用来对基于可视化编辑界面的基础开发方式进行功能扩展。
2. 基本概念
熟悉Unity3D使用的基本概念和术语,对于理解后文内容非常重要。以下术语在后文中将会反复出现。
举例说明,假设我们需要开发一款类似于《暗黑破坏神2》的游戏,那么开发团队将为该游戏创建一个工程,并在该工程中进行各种资源的管理和逻辑脚本的编写。玩家为了升级和获取装备,需要到地牢去打怪。如果地牢有三层,那么每一层都可以作为一个场景,各场景间通过地道进行切换。在每一层地牢场景中的地形、怪物、装备、血瓶、水池等元素都是游戏对象,这些游戏对象由于包含了不同的组件而具备不同的功能。比如怪物对象可以包含音频组件,在被杀死时能发出对应的惨叫声。
游戏中所有的三维模型(包括怪物模型、地牢模型等)、音频文件、图片文件等都可以看作是资源。如果某一类怪物数量较多,我们可以考虑把它作成预制件资源,直接在场景中实例化多份即可,这样一旦怪物属性发生了变化,仅需要修改一次。怪物的寻路与搏斗等业务逻辑适合放在脚本中实现,从而让它们真正地智能化,并与玩家角色进行交互,推动游戏情节展开。相机是玩家在游戏中的眼睛,向玩家展示游戏世界。该游戏中的相机需要跟随玩家角色而移动,方便玩家时刻观察自己角色的状态。
3. 视图菜单
运行Unity3D软件,如果是第一次使用则需要创建新的工程并导入开发所需的package,否则可直接打开原有工程。注意:工程路径中不能包含中文,否则会提示“Creating file Temp/tempFile failed…”并且无法创建成功。
进入Unity3D后,软件界面如下图所示:
以下分别介绍软件界面各组成部分的功能:
软件界面的最上方是主菜单,包括如下菜单项:
4. 坐标系统
坐标系统在Unity3D开发过程中具有非常重要的作用,是游戏对象定位、移动、缩放、旋转等操作的基础。坐标系统包含以下基本概念:
5. 资源元素
网格、材质、纹理、贴图和动画是资源模型中非常重要的元素,直接决定了资源在场景中的外观和行为表现。
Unity3D没有创建网格的工具,但是可以在常用的三维建模软件(如Maya、3ds Max等)中创建模型,然后导入到Unity3D中形成资源,这些资源可以被场景直接使用。
Unity3D支持读取fbx、dae、3ds、dxf和obj格式的文件,因此所有可以导出这些格式的软件都适用于Unity3D。
6. 脚本交互
Unity3D脚本支持JavaScript、C#与Boo(.Net平台中与Python语法相似的一种静态语言),官方推荐使用JavaScript,但考虑到C#的面向对象支持程度与强大的类库,在大型游戏项目开发时建议使用C#。
前文提到过,脚本也是组件的一种,可以挂载到游戏对象中。游戏框架在脚本生命周期的流程节点处或特定事件发生时调用相应方法,实现游戏业务逻辑。因此,脚本开发最为重要的是明确其生命周期的关键流程环节,这些流程环节所关联的脚本方法和它们的执行时机,从而在合适的脚本方法中编写所需的业务逻辑代码。
下图描述了脚本生命周期的脚本方法调用流程与时机。
图中内容可简化为这样的方法执行次序:Awake –> Start –> Update –> FixedUpdate –> LateUpdate –> OnGUI –> Reset –> OnDestory
需要注意的是,必须所有脚本的Awake方法均执行完毕后才会开始执行这些脚本中的Start方法,而各脚本的Awake方法的调用顺序是随机的。因此,对象的创建可在Awake方法中实现,而对象的获取可在Start方法中实现,保证调用先后次序。
7. 相机操作
相机是为玩家捕捉和显示世界的一种装置。在一个场景中你可以有数量不限的相机,它们可以被设置为任何顺序渲染,在屏幕上的任何地方渲染,或仅渲染屏幕的一部分。
相机可以被定制,被脚本化,或被子类化。对于益智游戏,相机通常处于静态显示全部视角。对于第一人称射击游戏,相机通常作为玩家角色的子对象,并将其放置在与玩家角色的眼睛等高的水平。对于赛车游戏,相机通常会跟随玩家角色所控制的车辆。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169326.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有