如何通过unity3d搭建三维场景

是这样的,想请教下,如何通过unity3d搭建三维场景
最新回答
枕边的泪

2024-06-05 02:56:48

  本教程将解释用于创建游戏场景的元素及方法。

  1. 游戏物体(GameObject)

  在

  Unity中昀重要的就是游戏物体。理解什么是游戏物体如何使用它是非常重要的。该部分就将解释这个概念。

  什么是游戏物体?在你的游戏中的任何东西都是游戏物体。然而,游戏物体自身并不能做所有的事情。在它们成为角色,环境或者特定的效果之前它们需要特定的属性。但是物体中的每一个都会做许多不同的事情。如果每一个物体都是一个游戏物体,我们怎么从一个静态房间中区分一个具有强大交互能力的物体?是什么使得游戏物体相互不同呢?

  答案就是游戏物体是一个容器。他们是一个空的可以容纳不同块的盒子,而这些块组成了一个带有光照贴图的岛或是一个物理驱动的汽车。为了真正理解游戏物体,你需要理解这些块;这些块被称为组件(Components)。根据你要创建的物体的不同,你可以添加不同组件到一个游戏物体中。将游戏物体想象为一个空的烹调罐,组件为不同的组成游戏的配料。

  游戏物体与组件的关系现在我们知道游戏物体包含组件。我们将通过使用昀常用的组件——

  变换组件(Transform)来讨论这两者之间的关系。打开任意一个场景,创建一个新的游戏物体(使用 Shift-Command-N),选择他并查看检视面板(Instpector)

  空物体的检视面板

  你可能注意到了这里有两个完全不同的部分。”GameO

  bject”和”Transform”。属于游戏物体部分的是关于游戏

  物体自身的信息。这里只有物体的名称。变换部分显

  示变换组件的信息。当你创建一个新的物体时,将会

  自动包含一个变换组件。所有的物体都会有一个变换

  组件。在 Unity中你不可能创建一个没有变换组件的物体,变换

  组件为所有物体提供了独特的功能。

  变换组件变换组件是昀重要的组件之一。它定义了游戏物体在场景视图中的位置,旋转,和缩放。如果游戏物体没有旋转组件,那么它将不会存在世界中。参考变换组件部分。变换组件也可以使用一个被称为父子化(Parenting)的功能,这个功能被编辑器(Unity Editor)利用并且是使用游戏物体昀关键的部分。

  父子化父子化的意思是你可以使一个游戏物体的变换值完全依赖于另一个不同游戏物体。简单来说,就是一个物体随着另一个物体移动。当一物体是另外一些物体的父(Parent)物体时,这个物体的旋转将影响所有的子(Child)物体。你可以在层次视图 (Hierarchy

  View)中通过拖动任何物体到另一个物体上来创建一个父。这将在两个物体之间创建父子关系。这种功能非常类似于文件夹树的功能,一个游戏物体包含在另一个游戏物体中。 需要指出的是所有子物体的变换值都是相对于父物体的,这个被称为局部坐标(Local Coordinates)。通过脚本你可以访问全局坐标(Global Coordinates)和局部坐标。

  一个游戏物体可以有任意多个子物体,但是只能有一个父物体。子物体也可以是其它物体的父物体。你可以很容易的在层次视图中分辨一个物体是不是一个父物体。如果在它名称的左边有一个箭头,那么它就是一个父物体。

  一个真实的父子层次树,所有带有箭头的物体都是父物体

  记住所有的父子化的功能都是通过游戏物体的变换组件执行的,而不是游戏物体自身。

  游戏物体-

  脚本关系当你创建一个脚本(script)并将其附加到一

  个游戏物体上时,这个脚本将在检视面板中作为一

  个组件显示。这是因为当它们被保存时脚本就变成

  一个组件。从技术角度来说,脚本是作为组件的一

  种来编译的,就像其它组件一样。

  任何在脚本中申明的公有变量都将在游戏物体的检

  视面板中显示为可编辑或可连接。编写脚本的时候

  ,你能够直接访问任何游戏物体类的成员。你可以

  在这里看到一个游戏物体类的成员列表。如果任何

  一个类作为一个组件附加在一个游戏物体上,你就

  可以在脚本中使用成员名来直接访问这个组件。例

  如键入 transform等同于

  gameObject.transform。前面的

  gameObject是编译器自动加入的,除非你要指定一个不同的物体。

  使用 this可以访问当前的脚本组件。使用 this.gameObject可以访问该脚本所依附的游戏物体,当然你可以简单的使用

  gameObject来访问此游戏物体。逻辑上来说,键入 this.transform与 tansform是相同的,如果你想访问一个组件而该组件并没有作为一个游戏物体成员包含在其中,你需要使用 gameObject.GetComponent()

  2. 使用组件(Using Components)

  组件是游戏中一个物体的行为和核心。它们是游戏物体的功能性模块。如果你还不理解游戏物体和组件之间的关系,请参考游戏物体部分。

  一个游戏物体包含许多不同的组件。缺省情况下。所有的游戏物体都包含一个变换(Transform)组件。这是因为变换表示物体的位置,旋转和缩放。没有变换组件,游戏物体将不会有位置。尝试创建一个空的游戏物体。单击 GameObject->Create

  Empty菜单项。选择新游戏物体,并查看检视面板

  。

  每一个空的游戏物体都有一个变换组件

  可以使用检视面板来查看都有什么组件附加在游戏

  物体上。但一个组件被加入或删除的时候,检视面

  板将显示当前附加的组件。可以使用检视面板来改

  变任何组件的属性 (包括脚本)。

  添加组件可以通过组件菜单为当前的游戏物体添加

  一个组件。尝试添加一个刚体(Rigidbody)到刚创建的物体上。选择该物体并从菜单中选择 Component->physics-

  >Rigidbody。现在你将会发现刚体属性显示在检视面板中,如果在该物体被选中的情况下按下播放键(Play)你将会有惊喜的发现。注意刚体是如何在一个空物体上添加功能的。

  附加了刚体组件的空物体

  可以附加任意数量的组件到一个游戏物体。一些组

  件可以与其他一些组件一起工作。例如,刚体可以

  和任何碰撞物一起工作。刚体通过 Ageia

  PhysX物理引擎控制变换,并且碰撞器允许刚体与

  其它的碰撞器碰撞和交互。一个不同的组件组合例

  子是一个粒子系统 (Particle

  System)。它们使用一个粒子发射器 (Particle

  Emitter),粒子动画 (Particle

  Animator)和粒子渲染器(Particle

  Renderer)来创建一组移动的粒子。

  可以通过点击位于检视面板头部的问号访问组件的

  参考页。

  编辑组件一个组件昀重要的方面是其可扩展性。当你添加一个组件到一个物体上时,它有不同的可以调整的值或者属性(Properties),也可以在游戏中通过脚本来调整它。有两种不同类型的属性:值(Values)和引用(References)。

  下图中是一个具有音频源 (Audio

  Source)组件的空游戏物体。在检视面板中所有音频源的值都是缺省的。这个组件包含一个单一的引用属性和七个值属性。音频剪辑 (Audio

  Clip)是一个引用属性。当这个音频源开始播放时,它将尝试播放 Audio

  Clip属性所引用的音频文件。如果没有添加引用属性,将会出现一个错误因为没有音品将被播放。你必须在检视面板中引用音频文件。你可以非常简单的从工程视图中将音频文件拖动到引用属性中。

  现在一个音效文件在音频剪辑属性中被引用

  组件可包含任何其它类型组件的引用,文件或游戏物体。你只需拖动适当的引用到这个属

  性上。引用类型是非常有用和强大的,尤其是在使用脚本时。参考脚本教程。 音频剪辑中剩下的七个都是值属性。都可以通过单击并按下 Enter键来调整它们。使用键盘输入值,并按 Enter保存它。你也可以通过使用 option-或 right-click或拖动数字属性来快速滚动这些值。 音频剪辑中的值属性都是数字,但是一些属性也可以是字符串。例如,文本网格(Text Mesh)组件包含一个文本(Text)属性,这个属性可以接受字母数字字符。 一些值可以包含字符,例如文本网格中的 Text属性