unity3d教你如何搭建场景.doc
《unity3d教你如何搭建场景.doc》由会员分享,可在线阅读,更多相关《unity3d教你如何搭建场景.doc(21页珍藏版)》请在咨信网上搜索。
1、Unity3D如何搭建场景搭建本教程将解释用于创建游戏场景的元素及方法。 1. 游戏物体(GameObject) 在 Unity中昀重要的就是游戏物体。理解什么是游戏物体如何使用它是非常重要的。该部分就将解释这个概念。什么是游戏物体?在你的游戏中的任何东西都是游戏物体。然而,游戏物体自身并不能做所有的事情。在它们成为角色,环境或者特定的效果之前它们需要特定的属性。但是物体中的每一个都会做许多不同的事情。如果每一个物体都是一个游戏物体,我们怎么从一个静态房间中区分一个具有强大交互能力的物体?是什么使得游戏物体相互不同呢?答案就是游戏物体是一个容器。他们是一个空的可以容纳不同块的盒子,而这些块组成
2、了一个带有光照贴图的岛或是一个物理驱动的汽车。为了真正理解游戏物体,你需要理解这些块;这些块被称为组件(Components)。根据你要创建的物体的不同,你可以添加不同组件到一个游戏物体中。将游戏物体想象为一个空的烹调罐,组件为不同的组成游戏的配料。游戏物体与组件的关系现在我们知道游戏物体包含组件。我们将通过使用昀常用的组件变换组件(Transform)来讨论这两者之间的关系。打开任意一个场景,创建一个新的游戏物体(使用 Shift-Command-N),选择他并查看检视面板(Instpector)空物体的检视面板你可能注意到了这里有两个完全不同的部分。”GameObject”和”Transf
3、orm”。属于游戏物体部分的是关于游戏物体自身的信息。这里只有物体的名称。变换部分显示变换组件的信息。当你创建一个新的物体时,将会自动包含一个变换组件。所有的物体都会有一个变换组件。在 Unity中你不可能创建一个没有变换组件的物体,变换组件为所有物体提供了独特的功能。变换组件变换组件是昀重要的组件之一。它定义了游戏物体在场景视图中的位置,旋转,和缩放。如果游戏物体没有旋转组件,那么它将不会存在世界中。参考变换组件部分。变换组件也可以使用一个被称为父子化(Parenting)的功能,这个功能被编辑器(Unity Editor)利用并且是使用游戏物体昀关键的部分。父子化父子化的意思是你可以使一个
4、游戏物体的变换值完全依赖于另一个不同游戏物体。简单来说,就是一个物体随着另一个物体移动。当一物体是另外一些物体的父(Parent)物体时,这个物体的旋转将影响所有的子(Child)物体。你可以在层次视图 (Hierarchy View)中通过拖动任何物体到另一个物体上来创建一个父。这将在两个物体之间创建父子关系。这种功能非常类似于文件夹树的功能,一个游戏物体包含在另一个游戏物体中。需要指出的是所有子物体的变换值都是相对于父物体的,这个被称为局部坐标(Local Coordinates)。通过脚本你可以访问全局坐标(Global Coordinates)和局部坐标。一个游戏物体可以有任意多个子物
5、体,但是只能有一个父物体。子物体也可以是其它物体的父物体。你可以很容易的在层次视图中分辨一个物体是不是一个父物体。如果在它名称的左边有一个箭头,那么它就是一个父物体。一个真实的父子层次树,所有带有箭头的物体都是父物体记住所有的父子化的功能都是通过游戏物体的变换组件执行的,而不是游戏物体自身。游戏物体-脚本关系当你创建一个脚本(script)并将其附加到一个游戏物体上时,这个脚本将在检视面板中作为一个组件显示。这是因为当它们被保存时脚本就变成一个组件。从技术角度来说,脚本是作为组件的一种来编译的,就像其它组件一样。任何在脚本中申明的公有变量都将在游戏物体的检视面板中显示为可编辑或可连接。编写脚本
6、的时候,你能够直接访问任何游戏物体类的成员。你可以在这里看到一个游戏物体类的成员列表。如果任何一个类作为一个组件附加在一个游戏物体上,你就可以在脚本中使用成员名来直接访问这个组件。例如键入 transform等同于 gameObject.transform。前面的gameObject是编译器自动加入的,除非你要指定一个不同的物体。使用 this可以访问当前的脚本组件。使用 this.gameObject可以访问该脚本所依附的游戏物体,当然你可以简单的使用 gameObject来访问此游戏物体。逻辑上来说,键入 this.transform与 tansform是相同的,如果你想访问一个组件而该组
7、件并没有作为一个游戏物体成员包含在其中,你需要使用 gameObject.GetComponent() 2. 使用组件(Using Components) 组件是游戏中一个物体的行为和核心。它们是游戏物体的功能性模块。如果你还不理解游戏物体和组件之间的关系,请参考游戏物体部分。一个游戏物体包含许多不同的组件。缺省情况下。所有的游戏物体都包含一个变换(Transform)组件。这是因为变换表示物体的位置,旋转和缩放。没有变换组件,游戏物体将不会有位置。尝试创建一个空的游戏物体。单击 GameObject-Create Empty菜单项。选择新游戏物体,并查看检视面板。每一个空的游戏物体都有一个变
8、换组件可以使用检视面板来查看都有什么组件附加在游戏物体上。但一个组件被加入或删除的时候,检视面板将显示当前附加的组件。可以使用检视面板来改变任何组件的属性 (包括脚本)。添加组件可以通过组件菜单为当前的游戏物体添加一个组件。尝试添加一个刚体(Rigidbody)到刚创建的物体上。选择该物体并从菜单中选择 Component-physics-Rigidbody。现在你将会发现刚体属性显示在检视面板中,如果在该物体被选中的情况下按下播放键(Play)你将会有惊喜的发现。注意刚体是如何在一个空物体上添加功能的。附加了刚体组件的空物体可以附加任意数量的组件到一个游戏物体。一些组件可以与其他一些组件一起
9、工作。例如,刚体可以和任何碰撞物一起工作。刚体通过 Ageia PhysX物理引擎控制变换,并且碰撞器允许刚体与其它的碰撞器碰撞和交互。一个不同的组件组合例子是一个粒子系统 (Particle System)。它们使用一个粒子发射器 (Particle Emitter),粒子动画 (Particle Animator)和粒子渲染器(Particle Renderer)来创建一组移动的粒子。可以通过点击位于检视面板头部的问号访问组件的参考页。编辑组件一个组件昀重要的方面是其可扩展性。当你添加一个组件到一个物体上时,它有不同的可以调整的值或者属性(Properties),也可以在游戏中通过脚本来调
10、整它。有两种不同类型的属性:值(Values)和引用(References)。下图中是一个具有音频源 (Audio Source)组件的空游戏物体。在检视面板中所有音频源的值都是缺省的。这个组件包含一个单一的引用属性和七个值属性。音频剪辑 (Audio Clip)是一个引用属性。当这个音频源开始播放时,它将尝试播放 Audio Clip属性所引用的音频文件。如果没有添加引用属性,将会出现一个错误因为没有音品将被播放。你必须在检视面板中引用音频文件。你可以非常简单的从工程视图中将音频文件拖动到引用属性中。现在一个音效文件在音频剪辑属性中被引用组件可包含任何其它类型组件的引用,文件或游戏物体。你只
11、需拖动适当的引用到这个属性上。引用类型是非常有用和强大的,尤其是在使用脚本时。参考脚本教程。音频剪辑中剩下的七个都是值属性。都可以通过单击并按下 Enter键来调整它们。使用键盘输入值,并按 Enter保存它。你也可以通过使用 option-或 right-click或拖动数字属性来快速滚动这些值。音频剪辑中的值属性都是数字,但是一些属性也可以是字符串。例如,文本网格(Text Mesh)组件包含一个文本(Text)属性,这个属性可以接受字母数字字符。一些值可以包含字符,例如文本网格中的 Text属性测试属性当你的游戏处在播放模式 (Play Mode)中时,你可以在游戏物体的检视面板中修改它
12、的属性。例如,你或许想试验不同的跳跃高度。如果你在一个脚本中创建了一个跳跃高度 (Jump Height),你可以进入播放模式,改变这个值,并按跳跃键查看结果。然后不需要退出播放模式就可以再次改变这个值。当你退出播放模式时你的属性值将恢复到播放前的值,因此,你不会丢失任何工作。这个工作方式,提供给你难以置信的方便来试验,调整,精简你的游戏而不必要花费大量的时间。移除组件如果你想移除一个组件,在检视面板的头部使用 option-或右击然后选择移除组件(Remove Component)。或者你可以单击位于组件头部问号旁边的选项图标。所有的属性值都将丢失并且是不可恢复的。因此在移除组件前请确认你要
13、这样做。组件-脚本关系尽管脚本(Scripts)看起来都与组件不同,事实是脚本是组件的一种类型。它是一种你自己创建的组件。你可以定义能够显示在检视面板中的成员,并且它将执行你写出的任何功能。脚本组件有很多组件可以通过任何脚本直接访问。例如,如果你想访问变换组件的变换(Translate)功能,你只需要使用 transform.Translate()或 gameObject.transform.Translate()。因为所有的脚本都是附加在游戏物体上的,所以当你写 transform的时候就暗示要访问当前脚本所在的物体的变换组件。当然这两者完全等价的。使用 GetComponent() 有许多
14、组件不能成为一个游戏物体类的成员。因此你不能隐式访问它们,必须显式访问它们。通过调用 GetComponent(“component name”)并存储一个引用到结果中。当你需要引用附加到该游戏物体上的其它脚本时这个方法是昀常用的。假设你在写脚本 B并且你想做一个脚本 A的引用,而这两者是附加在相同的游戏物体上的。你可以使用 GetComponent()来引用脚本。在脚本 B中你可以使用 scriptA = GetComponent(“ScriptA”); 然后你就能够在脚本 B中通过 scriptA.variableName来访问任何脚本 A中的变量。 3. 预设(Prefab) 预设是一个
15、存储在工程视图中可重用的游戏物体。预设可以被插入到任意数量的场景中,并可多次出现在同一场景中。当你添加一个预设到场景中,你就创建了一个它的实例。所有的预设实例都与原始的预设相关联并且本质上是它的一个克隆。不论在你的工程中存在多少实例,当你对预设作了任何改变后你将看到这种改变被应用到所有的实例上。不论你的预设是单一的一个游戏物体或者是一组游戏物体,在预设的变换层次中所作的任何改变都建碑应用到它的实例上。创建预设为了创建预设,你需要一个新的空预设。这个空预设不包含任何物体,并且你不能创建它的一个实例。将一个新的预设想象为一个空的容器,等待使用游戏物体数据来填充。一个新的空预设,它不能被实例化,除非
16、你使用游戏物体来填充它为了填充预设,你需要使用在场景中已经创建的游戏物体。下面是精确的步骤: 在工程视图中,选择一个你要放置预设的文件夹 从主菜单中选择 Assets-Create-Prefab,或者从工程视图的上下文菜单中选择 Create-Prefab 命名该预设 在层次视图(Hierarchy view)中,选择你要放入预设的游戏物体 将它们从层次使用中拖放到工程视图中在你执行了上述步骤后,游戏物体和它的子物体都将被拷贝到预设中。现在,预设可以在多个实例中被重用。在层次中的原始物体现在已经成了该预设的一个实例。创建更多预设的实例是非常简单的。实例化预设为了在当前场景中创建一个预设的实例,
17、从工程视图中拖动预设到场景(Scene)或层次视图中。这将从预设中拷贝所有父物体和所有的子物体。这些游戏物体被连接到(linked)预设,在工程视图中将使用蓝色的文本来显示它们。其中三个物体是预设的实例继承继承意味着当预设改变时,这些改变也将被应用到所有与之相连的物体上。例如,如果你添加一个脚本到一个预设,那么所有该预设的实例都将包含该脚本。然而你也可以修改单个实例的属性而不会破坏与预设的联系。一个链接物体检视面板(Inspector)中的所有公有属性都有一个复选框。这个复选框是一个重载标记(override flag)。如果该属性的重载标记被启用,表示该属性将不会受到预设改变的影响。简单来说
18、,这允许你修改实例物体并使得它们不同于它们的预设,而且又不会破坏它与预设之间的联系。一个实例物体和非继承一个实例物体和非继承 当你在检视面板中修改一个属性的时候,该属性的重载标记会自动启用。任何对已有属性的改变都不会打断与预设的联系。然而有一些改动将断开它,下面是保持预设连接的基本规则: 不能添加一个新的组件到一个实例上 不能从一个实例上移除一个组件 不能使用其他游戏物体作为实例的子物体如果你这样做,你将看到一个警告消息出现并要求你确认。当一个实例与预设断开后,对预设的修改将不会影响到这个游戏物体。如果你特意或是意外地断开了实例的连接,你可以应用你的改变到预设并重新建立该连接。这将使得预设和所
19、有的实例都发生改变。应用改变创建或编辑一个复杂预设的时候,你可以非常容易的在场景中实例化它们,编辑实例,并应用改变到预设。这种工作方式将允许你在场景视图中查看并修改预设。一旦你修改完成,选择该实例物体的根并从菜单中选择 GameObject-Apply changes to Prefab。所有的改变都被拷贝到预设中,并应用到每个场景中所有的实例上。将物体连接到预设可以将预设应用于现有的没有连接的物体上。这将添加所有该物体没有的组件到物体上并将其连接到预设。在某些场合这是非常有用的。为了连接任何已有的物体到到预设,按住 Option并将预设从工程视图中拖放到层次视图的物体上。这个游戏物体将成为该
20、预设的一个实例。这个操作不会改变预设本身,但是会在你刚连接的物体上添加或移除一些组件和子游戏物体。导入预设当你放置了一个网格资源到你的资源文件夹中时,Unity将自动导入该文件并生成一些看起来与预设相似东西。但它们并不是预设,这只是简单的资源文件。注意资源文件图标与预设图标是有点不同的这个资源在场景中作为一个游戏物体被初始化。可以在该游戏物体上添加或移除组件。然而你不能将任何改变应用到资源自身上因为这需要添加一些数据到该资源物体上!如果要创建需要重用的物体,你应该将资源实例作为预设。当你已经创建了一个资源实例,可以创建一个新的空预设并拖动游戏物体到该预设上。现在你拥有了一个连接到该物体的标准预
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- unity3d 如何 搭建 场景
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。