下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 Unity3D入门教程中文版

Unity3D入门教程中文版.doc

Unity3D入门教程中文版

英国老鼠
2013-03-30 0人阅读 举报 0 0 暂无简介

简介:本文档为《Unity3D入门教程中文版doc》,可适用于IT/计算机领域

UnityD基本操作、用UnityD创建简单漫游基本设置修改视角控制键为右键如何取消浏览窗口上的右键菜单植物效果设置水面效果的设置烘培光影贴图的处理如何制作连续加载的场景漫游用UnityD创建简单漫游建模中使用的图片、文件、文件夹等以及模型中物体、材质等的名称都不能使用中文或者特殊符号可以使用英文字母、数字、下划线等。调整Max的单位为米。烘培光影的设置。模型的中的植物效果第一种是单面片植物需要设置其轴心为其物体的对称中心第二种是十字交叉的植物效果第三种则是到UnityD编辑器中通过地形编辑器系统添加。基本设置Fbx导出插件下载地址:http:usaautodeskcomadskservletitemsiteID=id=将Max文件中用到的图片都拷贝到Textures目录下如再打开Max文件导出为FBX文件使用默认设置FBX文件也放置在和Max文件相同的目录下如导出的时候可以将模型简单的分类如地面、植被、楼房等也可以将模型分为几个区域如小区小区学校等等分开导出将包含Max文件、Fbx文件和Textures文件夹的文件夹拷贝到UnityD项目的Assets目录下如下图中红圈在下一次用UnityD编辑器开启本项目的时候编辑器将自动导入更新该文件夹中的信息并生成Materials文件夹如启动UnityD编辑器选择刚才拷贝进来的文件中的Fbx文件如修改其中的Meshes下的ScaleFactor和GenerateColliders如点击其他Fbx文件或者单击其他区域将弹出如下的对话框点击Apply即可类似的方式设置其他Fbx文件注意其中植物植被类的Fbx文件不需要设置GenerateColliders项将Fbx文件直接拖放到Hierarchy区域如点击Hierarchy区域中的对象同时将鼠标移动三维显示区域同时点击键f则该对象自动适配显示到三维区域中心如将全部fbx添加完成后提高场景亮度如下单击AmbientLight如下调整为即可设置完成设置第一人称浏览删除场景中MainCamera将Project区域的StandardAssets下的Prefabs下的FirstPersonController拖到Hierarchy区域中点选FirstPersonController调整FirstPersonController的位置到场景中合适的位置并设置其高度为到左右设置FirstPersonController的高度在场景中地面之上点击运行即可测试修改视角控制键为右键打开Project区域中的StandardAssets下的CameraScripts下的MouseLook脚本在在QuaternionoriginalRotationvoidUpdate(){if(axes==RotationAxesMouseXAndY){Readthemouseinputaxis中添加一行代码修改为QuaternionoriginalRotationvoidUpdate(){if(InputGetAxis("Fire")==)returnif(axes==RotationAxesMouseXAndY){Readthemouseinputaxis如何取消浏览窗口上的右键菜单只要设置Unity对象的参数即可禁止右键菜单的显示如下:<objectid="UnityObject"classid="clsid:FDEADCA"width=""height=""codebase="http:webplayerunitydcomdownloadwebplayerUnityWebPlayercab#version=,,,"><paramname="src"value="MyDataFileunityd"><paramname="disableContextMenu"value="true"><embedid="UnityEmbed"src="MyDataFileunityd"width=""height=""type="applicationvndunity"pluginspage="http:wwwunitydcomunitywebplayerx"disableContextMenu="true"><object>植物效果设置对于单面片的植物效果需要设定其材质为TransparentVertexLit类型并为其添加公告板脚本设定前设置材质类型为TransparentVertexLit类型如下给单面片植物添加公告板脚本的方法是先选择该植物然后点击菜单component下的scripts下的cameraFacingBillboard即可如下设置材质类型和添加公告板脚本后如下如果没有该脚本组件可以打开脚本编辑器拷贝如下代码到脚本中保存到AssetsScripts下命名为CameraFacingBillboardcs即可usingUnityEngineusingSystemCollectionspublicclassCameraFacingBillboard:MonoBehaviour{publicCameracameraToLookAtvoidStart(){cameraToLookAt=Cameramain}voidUpdate(){Vectorv=cameraToLookAttransformpositiontransformpositionvx=vz=ftransformLookAt(cameraToLookAttransformpositionv)}}对于十字交叉的植物需要将其材质设定为NatureVegetationTwoPassunlit类型设置前的效果设置后的效果水面效果的设置创建一个网格面片给该水面面片设置水材质和水脚本如即可烘培光影贴图的处理UnityD光影烘培的要求UD的光影贴图使用的是Dmax中的标准材质的自发光贴图通道来存储光影贴图相关参数如给每个物体都附上贴图如果是纯色物体也付给纯色贴图打光后选择要烘培的物体设置输出路径添加烘培输出的贴图类型一、Unity基础本部分是你开始Unity的关键。这里将解释Unity的界面菜单项使用资源创建场景和发布。当你完全阅读了该部分后你将能够理解Unity是如何工作的以及如何使其更加有效的工作和如何将简单的游戏放置在一起。界面(Learningtheinterface)现在我们开始学习Unity如果你还没有打开Unity,你可以通过双击位于Application>Unity文件夹中的Unity图标来运行它当它第一次运行时你将看到如下的场景:Unity运行时的缺省场景如果你打开过任何实例你的屏幕会与上图不同有很多需要学习的东西让我们花费点时间来观察理解上述界面。我们将介绍每一个接口元素。概要主窗口的每一个部分都被称为视图(View)。在Unity中有多种类型的视图但是你不需要同时看见所有的视图。不同的布局模式(Layoutmodes)包含的视图是不同的。通过单击布局下拉控件来选择不同的布局该控件位于窗口的右上角。布局模式选择下拉列表现在单击布局选择并单击Animation切换到动画布局(Animationlayout)。还可以从菜单中选择Window>Layouts>Animation来切换。动画布局包含所有的视图这是昀好的用来介绍它们的方法。通过视图左上角的名称你可以迅速的分辨这些视图。这些视图是:场景视图(SceneView)用于放置物体游戏视图(GameView)表示游戏在运行时的外观层次视图(Hierarchy)当前场景中的游戏物体的列表工程视图(Project)显示当前打开工程中所有可用的物体和资源检视视图(Instpector)显示当前选中物体的细节和属性时间线(Timeline)用于为当前选中物体创建基本的时间线动画场景视图(SceneView)场景视图场景视图(SceneView)是一个可交互的沙盘。你将使用它来选择并在场景中定位所有的游戏物体(GameObjects)包括玩家摄像机敌人等。在场景视图中操纵并修改物体是Unity非常重要的功能。这是昀好的通过设计者而不是玩家的角度来查看场景的方法。在场景视图中你可以随意移动并操纵物体但是你应该知道一些基本的命令以便有效的使用场景视图。第一个你应该知道命令是FrameSelected命令。这个命令将居中显示你当前选中的物体。你可以在层次视图(Hierarchy)单击任何物体然后移动你的鼠标到场景视图上并按F键。场景视图将移动以居中显示当前选择的物体。这个命令是非常有用的你将在场景编辑的时候经常使用它。在场景视图中操作在场景视图的上方有一个包含布局模式选择的工具栏工具栏尽管现在的工具栏没有附着在场景视图窗口上但是位于左侧的四个按钮可用来在场景视图中导航并操纵物体中间的两个用来控制选中的物体轴心如何显示。左边的第一个ViewTool将在以后说明。后面的工具为操纵工具(ManipulationTools),中间的两个为手柄位置工具(HandlePositionTool)选中任何操纵工具可允许你交互时的移动旋转或缩放物体。当你已经选择了一个工具时你可以在场景视图中单击任何一个物体选中它现在按下F键使得该物体居中显示。如下不同的操纵工具平移工具热键W旋转工具热键E缩放工具热键R当选中一个物体时你将看到Gizmo坐标每个工具有不同的Gizmo坐标形式平移旋转缩放点击并拖动当前Gizmo坐标的任何一个坐标轴以便平移旋转或缩放当前选中物体的变换(Transform)组件。你也可以通过单击并拖动Gizmo坐标的中心来在多个轴上操纵物体。如果你有一个三键的鼠标你可以通过单击中键来调整昀后调整的轴而不用直接点击它。参考变换组件(TransformComponent)部分获取更多内容。手柄位置工具(HandlePositionTool)用来控制物体或一组选中的物体的轴心如何和在哪里显示。手柄位置工具选择中心(Center)意味着使用当前所选所有物体的共同轴心选择轴心(Pivot)意味着将使用各个物体的实际轴心手柄位置设置为中心使用物体的共同轴心手柄位置设置为轴心,使用实际的物体轴心在场景视图中导航根据使用的鼠标的不同有很多不同的方式可以在场景视图中导航。使用三键鼠标按住Option按钮并拖动鼠标左键可以使用旋转模式(Orbitmode)按住Option按钮并拖动鼠标中键可以使用拖动模式(Dragmode)按住Option按钮并拖动鼠标右键可以使用缩放模式(Zoommode)。也可以使用滚轮来缩放(略)视图工具模式视图工具的拖动模式快捷键Q在拖动模式(DragMode)下在场景视图中单击并拖动鼠标来上下左右移动视图。旋转(Orbit)和缩放(ZoomModes)模式也是昀常用的视图工具。保持视图工具选中并按住Option键即可进入旋转模式。单击并拖动鼠标可以看到视图是如何旋转的。同时注意视图工具按钮从手型变成了眼睛。视图工具的旋转模式Option键昀后你可以通过按下Command按钮进入缩放模式。在这种模式下单击并拖动鼠标将前后缩放你的视图。注意缩放模式的图标是一个放大镜。视图工具的缩放模式Command键使用视图工具模式并拖动鼠标是基本的场景视图导航方法。场景视图控制栏所有的视图的顶部都有不同的控制栏(ControlBar)场景视图控制栏拥有多数选项并且看起来像下面的样子:场景视图控制栏第一个下拉菜单为视图选择器。展开它你可以改变当前视图。所有的视图都有这个选择器如果你想创建自定义的一个界面布局它是非常有用的每个视图都有的视图选择器下一个下拉菜单是绘制模式(DrawMode)。你可以选择场景视图使用纹理模式线框模式或者纹理线框模式。这个对你发布游戏是没有任何影响的。绘制模式下拉框第三个下拉菜单为渲染模式(RenderMode)。你可以选择使用RGB模式或Alpha模式。同样这将不会影响游戏发布。渲染模式下拉框控制栏中的下一项是一组三键。视图控制栏中的三键左边的开关控制普通光照。当该按钮被禁用时你将看到整个场景中简单光照。当它被启用时你将看到你放在场景中的光照物体的影响。启用该按钮将允许你在发布游戏时看到游戏中的光照。中间的按钮控制各种不同效果的开关例如场景视图网格(SceneViewGrid)天空盒(Skyboxes)和GUI元素(GUIElements)启用该按钮将允许你在发布看到这些效果右边的按钮控制正交模式(OrthographicMode)。打开它将移出所有的景深效果。该按钮不会影响到你发布游戏。正交模式用来精确定位物体。景深相机正交相机。物体不会随着距离的增大而变小下一个下拉列表是方向(Direction)下拉列表。它将移动场景视图到你选择的方向。昀后一个下拉列表是层(Layer)下拉列表。你可以使用它来选择不同层的物体。参考层部分。该选项不会影响游戏发布。游戏视图游戏视图你的游戏的可见部分游戏视图(GameView)将使用游戏中设置的相机信息来渲染。这个视图显示的是游戏运行过程中你将看到的场景。如果你平移或者旋转场景的主相机你将看到游戏视图的变化。你需要使用一个或多个相机(Cameras)来控制玩家在游戏中实际看到的场景。参考相机组件部分。播放按钮和状态栏这个按钮用来在游戏视图中播放暂停和步进你的游戏。在你构建场景的任何时候你都可以进入播放模式(PlayMode)并看看你的游戏是如何工作的。播放按钮和状态栏按下播放按钮(PlayButton)进入播放模式。当你的场景在播放模式下时你还可以移动旋转和删除物体。你也可以改变变量的设置。在播放模式下所做的任何改变都是暂时的并在你退出播放模式时重置。你可以再次单击播放按钮退出。在播放模式下你可以停止或步进你的游戏。暂停并检视你的场景是昀好的发现问题的方法。右侧的状态栏有多种不同的作用。它将提供上下文敏感信息和提示错误信息和来自与脚本的输出语句。如果你的游戏有任何问题查看状态栏将是昀好的发现问题的方法。你可以双击状态栏打开控制台窗口其中将显示所有的脚本或可见的运行时错误信息。游戏视图控制栏控制栏上紧挨着视图下拉列表的是宽高下拉列表(AspectDropdown)。这里你可以指定游戏视图窗口的宽高比为不同的值。这将影响到GUI元素的位置。使用它来测试你的游戏在不同分辨率下的外观。控制栏上昀右边的是Gizmos按钮(GizmosButton)。这将确定是否显示Gizmos坐标工程视图(ProjectView)工程视图存储所有资源当你创建一个工程时将生成一组文件夹。其中之一被称为资源(Assets)文件夹。在工程视图(ProjectView)中可以查看资源文件夹。如果你打开过资源文件夹你将发现所有的项都将出现在工程视图中。不同的是在工程视图中你将创建并将物体连接在一起。这些关系将存储在工程文件夹的其他位置。从工程视图中移动资源将维持并更新文件之间的联系。从Finder中移除资源将断开联系。因此你应该只使用Finder来将文件添加到资源文件夹。任何其他对资源的操作都应该在工程视图中进行。导入物体一旦你创建了资源(模型图像声音或者脚本)你可以使用Finder将其正确地放置到资源文件夹下。当你做这些的时候Unity可以处于打开状态。一旦你切换到Unity新的资源将被检测到并自动导入。资源就可以在工程视图中出现。参考资源工作流部分。创建资源在控制栏中使用创建下拉列表(CreateDropdown)来创建你需要的物体。此外你还可以使用Control单击或右键在工程视图中单击打开相同的下拉列表。创建下拉列表组织工程视图使用创建下拉列表在工程视图中创建文件夹。然后你可以重命名并使用该文件夹就像在Finder中一样并可以在工程视图中将任何资源拖动到文件夹中。例如你可以创建名为Scripts的文件夹并将所有的脚本文件放置其中。在你选中的文件上创建文件夹将创建嵌入式的文件夹。使用嵌入式的文件夹可以保持你的工程视图整洁。注意:如果展开或折叠一个目录时按下了Alt键所有的子目录都将展开或折叠。导入设置在控制栏上有一个导入设置按钮(ImportSettings)位于创建下拉列表的旁边。根据所选资源的不同当该按钮被单击时将在导入设置弹出窗口中显示不同的选项。参考导入资源(ImportingAssets)部分。工程视图控制栏设置(Settings)按钮将为当前选择的资源打开导入设置。创建下拉列表将会在你选择的目录下创建项目创建文件夹是一种快速有效的组织你的工程视图的方法。层次(Hierarchy)层次当前场景中的所有物体层次视图(Hierarchy)将显示当前打开的unity场景文件(SceneFile)中的所有物体。它用于选择并成组物体。当从场景中添加或删除一个物体时它将在层次中显示或消失。如果你不能在场景视图中同时看到所有物体你可以使用层次来选择并检视它们。物体层次Unity使用一个称为父化(Parenting)的概念。任何物体都可以成为另一个物体的父或子。一个子物体可以从它的父物体继承移动和旋转。Parenting对于组织场景角色接口元素或者保持场景整洁有很大的用处。单击一个物体并将其拖动到另一个物体上可以建立父子关系。你将会看到一个三角显示在新的父物体的左边现在你可以展开或折叠父以便在层次中查看他的子物体而不会影响你的游戏。显示预设按钮(ShowPrefabButton)当位于控制栏(ControlBar)上的该按钮被启用时任何一个在层次中选中的预设(Prefab)实例将在工程视图中显示它的一个可视化的参考如果你在场景中改变预置实例的名称这是非常有用的。检视检视选中物体的细节检视面板(Inspector)显示当前选中物体的基本信息也显示它所包含的组件(Component)和组件的属性。它是用来设置场景中物体属性的地方。当创建一个好玩的游戏时你将在检视面板上做大量的排错。检视面板显示当前选中物体的基本信息和它的设置每一个物体都包含许多不同的组件。当你在检视面板中查看物体时每一个组件都有它自己的昀小标题栏。例如每一个物体都包含变换组件(TransformComponent)。每个组件的参数和设置都可以在检视面板中修改。物体结构在物体内部的组件将定义物体是什么以及做什么。将一个新的物体想成一个空的画布并且每一个组件都是一个不同画笔。当你组合并设置不同的组件时你就像在绘制你物体的行为。特定的组件就像画笔不同的颜色可以在一起工作的很好。然而其他的一些组件就不能一起工作。可以通过使用组件(Component)菜单来向物体添加组件。对于组件的详细信息可以参考组件部分此外在检视面板中所有的组件都会在它们的名称旁边显示一个问号单击这个问号可以打开该组件的参考文档。时间线(Timeline)视图使用时间线(Timeline)视图可以为当前选中物体创建动画。Unity可以导入包含动画的文件但是你可以使用时间线视图来制作基本的动画而无需使用D动作软件。时间线视图将帮助你为物体制作动画参考动画部分调整视图布局现在你已经知道了所有不同的视图你可以重新布局它们布局下拉列表然你选择或保存不同视图布局尝试选择不同的布局。现在从下拉列表中选择新布局(NewLayout)并给它一个唯一的名称。为了自定义布局你需要分割(Split)和组合(Combine)视图。Control单击或右键在两个视图的分割线上单击或者在任何视图的控制栏上。当鼠标变成一个分割线时你可以单击并拖动鼠标来改变视图的大小。一个完全的自定义布局你还可以将任何视图切换为全屏模式。将你的鼠标移到视图上并按下空格键(Spacebar)这将临时昀大化当前视图并隐藏所有其他视图。这将允许你在更大的屏幕尺寸上查看更多的细节。再次按下空格键可以切换到普通视图模式下。资源流程(AssetWorkflow)这里我们将解释在Unity中如何使用一个简单的资源。这些步骤是通用的而且可以看作是一个基本操作的演示。在该例子中我们将使用D网格。创建原始资源使用任何D建模软件创建你的资源。在我们的例子中我们将使用Maya。导入当保存了你的资源后你应该将其保存到你的工程文件夹的资源(Assets)文件夹中。当你打开Unity工程这些资源将被检测到并导入到工程中。当你查看工程视图(ProjectView)时你将发现你保存的资源。导入设置如果你选择了一个资源并单击导入设置(ImportSetting)按钮将出现一个对话框该对话框的选项随着导入资源的不同而不同。向场景中添加资源从工程视图中单击并拖动网格到层次(Hierarchy)或场景视图(SceneView)中即可将其添加到场景中。当你拖动一个网格到场景中时你将创建一个拥有网格渲染组件(MeshRenderComponent)的物体。如果你导入的是纹理或声音文件你需要将其添加到场景中已有的一个物体上。将不同的资源放置在一起下面是一些常用资源之间的关系纹理应用到材质(Material)材质应用到物体(带有渲染网格组件)动画(Animation)应用到物体(带有动画组件)声音应用到物体(带有声音源(AudioSource)组件)创建预设(Prefab)预设是可以在场景中重用的一组物体和组件的集合。几个相同的物体和通过同一个预设来创建这些物体称为实例。例如创建一棵树的预设将允许你在场景中不同的地方放置多个相同的实例。因为这些树都与预设相关任何对预设的改变都将自动应用到所有树的实例上。因此如果你改变要改变网格材质或其他任何东西你只需要在预设中改变一次那么所有的继承的实例树都将改变。你也可以改变一个实例并使用GameObject>ApplyChangestoPrefab将这种改变应用到所有相同的实例上。当你有一个包含多个组件或子物体层次的物体时你可以制作一个顶层(或根)物体的预设并可重用整个物体集。可以将预设看作是物体结构的蓝图。对于该蓝图来说所有的拷贝都是相同的。因此如果蓝图被更新那么它的所有实例也会相应更新。这里有几种不同的方式可以使你通过改变一个实例来改变整个蓝图。参考预设部分。为了从你场景中的物体上创建一个预设首先在工程视图中创建一个新的预设。并命名然后在场景中单击你想用于创建预设的物体。拖动它到新的预设中你将看到物体的名称变成了蓝色。这样你就创建了一个可以重用的预设。更新资源你已经导入实例化并将资源连接到了预设。现在当你需要编辑你的资源时只要在工程视图中双击它此时将运行属性应用程序在这里你可以做任何你需要的改变。当你更新它时保存它。然后但你切换到Unity,这个更新将被检测到并且资源将被重新导入。而资源到预设的连接还将存在。你将看到你的预设被更新了这就是你需要知道的更新资源部分。仅仅需要打开和保存。创建场景(CreatingScenes)场景包含所有的游戏物体。它们可以用来创建主菜单不同的关卡和任何其他东西。将不同的场景文件作为一个不同的关卡。在每个场景中你将放置你的环境障碍物和装饰实际上就是一点一点地搭建你的游戏。实例化预设使用上面章节中描述的创建预设(Prefab)的方法。你可以在此处得到更多的关于预设的信息。一旦你创建了预设你就可以简单快速地得到一个预设的拷贝称为实例(Instance)。为了创建任何预设的一个实例从工程视图(ProjectView)中拖动一个预设到层次或场景视图中。现在你就得到了一个预设拷贝的实例你可以将其放置在任何你想要的位置上。添加组件和脚本当你选中任何预设或物体时你可以通过使用组件(Components)来向其中添加一些额外的功能。参考组件获取更多的信息。脚本(Scripts)也是组件的一种类型。选择物体并从组件(Component)菜单中选择一个组件。你将看到组件显示在物体的检视(Inspector)视图中。缺省情况下脚本也包含在组件(Component)菜单中。如果添加组件断开了物体到预设的联系你可以选择GameObject>ApplyChangestoPrefab来重新建立联系。放置物体一旦你的物体体出现在场景中你就可以使用视图工具(ViewTools)来定位它。此外你还可以使用位于检视窗口中的变换(Transform)值来调整物体的位置和旋转参考变换组件部分。相机相机就是你游戏的眼睛。每一个玩家都是通过一个或多个相机在场景中看东西的。你可以象普通物体一样定位旋转并父化相机。相机就是一个拥有相机组件的物体。因此它可以做任何普通物体能做的事情还可以做一些相机特有的功能。当你创建一个新的工程时标准的资源集中安装了一些有帮助的相机脚本。你可以通过Components>CameraControl来找到它。当然相机还有一些其他的功能参考相机组件部分。光照除了一些特殊的情况以外你需要在大多的场景中添加光照(Lights)。有三种不同类型的光照它们的功能有一些不同。重要的是它们添加氛围和气氛到你的游戏中。不同的光照可以完全改变你的游戏的氛围有效地使用光照是一个非常重要的主题。参考光照组件部分。发布(PublishingBuilds)在你创建你的游戏的时候你可能会想知道当你发布并在编辑器之外运行的时候会是一个什么样子。该部分就是解释如果访问发布设置(BuildSetting)并解释如何创建不同的游戏。通过File>BuildSettings…菜单可以访问发布设置。当你发布你的游戏的时候它将弹出一个可编辑的屏幕列表。发布设置对话框当你第一次打开该窗口时它将显示空白如果在列表为空时发布游戏只有当前打开的场景会被发布。如果你想快速发布一个测试场景文件那就用一个空的场景列表来发布。同时发布多个场景也是非常容易的。有两种方法添加场景。第一种方式是单击添加打开场景(AddOpenScene)按钮你将看到当前的场景出现在列表中。第二种方法就是从工程视图(ProjectView)中将场景文件拖动到列表中。注意每一个场景都有一个不同索引号。Scene是第一个加载的场景。如果你想加载一个新的场景在你的脚本中使用ApplicationLoadLevel()如果你已经添加了多个场景文件并需要重组它们只需要在列表中单击并拖动它们即可对它们进行排序。如果你想从列表中移出一个场景选择该场景并按CommandDelete。这个场景将从列表中消失并将不会包含在发布中。当你设置好以后选择发布目标(Buildtarget)并按下Build按钮。你可以从出现的标准保存对话框中选择一个名称和位置。当你单击保存时Unity将快速的发布你的游戏。非常简单。选中压缩纹理(CompressTexture)复选框将会压缩工程中所有的纹理。你只需要压缩一次但是第一次压缩将花费一些时间。如果你在压缩后更新了资源你将不得不重新压缩。你也可以在导入的时候启用纹理压缩着可以在Unity>Preferences菜单中设置。选中脚本调试(StripDebugSymbols)复选框将移出在发布中出现的调试信息。这将减小发布文件的大小并可以实现优化的目的。Alpha或betas版应该禁用这个选项已达到调试的目的。在昀后发布release版的时候你应该选中该复选框。流式网页播放流式网页播放器是Unity的新特性。这将允许你的网页播放器在Scene完全加载后开始播放。如果你的游戏有十关强制玩家等待所有的关卡都下载完成再开始游戏是没有意义的。当你发布一个流式网页播放器时场景需要的资源需要根据Secne文件的顺序来下载。当所有包含在Secne中的资源完全下载后就开始播放了。简单的来说流式网页播放器将使你的游戏尽可能快地播放。你需要确定的唯一一件事就是确认在你开始播放前下一等级已经加载完成了。通常情况下对于一个非流式播放器你可以使用如下的代码来加载关卡:ApplicationLoadLevel(“levelName”)对于一个流式的网页播放器你必须首先检查该关卡是否已为已完成。这个可以通过CanStreamedLevelBeLoaded()函数来来做。下面为代码:varlevelToLoad=functionLoadNewLevel(){if(ApplicationCanStreamedLevelBeLoaded(levelToLoad)){ApplicationLoadLevel(levelToLoad)}}如果你想在播放器中显示下载进度你可以通过GetStreamProgressForLevel()函数来读取进度。发布过程发布过程将首先放置一个空的游戏应用的副本到你指定的位置。然后它将使用发布设置中的场景列表每次在编辑器中打开一个优化它们并将它们整合到应用程序包中同时它将考虑所有包含在场景中的资源并将这些数据存储在应用程序包的不同文件中。场景中任何被标记为”EditorOnly”的物体将不会被发布。这对于调试那些不需要包含在昀终游戏中的脚本是非常有用的。当一个新的关卡被加载所有前一个关卡的物体都将被销毁。为了避免这种操作你可以使用DontDestroyOnLoad()函数在任何你不想销毁的物体上。可以使用它来保持音乐的一直播放或者用于游戏脚本控制器以便保持游戏状态和进度。当新的关卡下载完成后一个OnLevelWasLoaded()消息将发送到所有被激活的物体上。对于如何创建拥有多个场景的游戏例如一个主菜单一个积分屏和一个真实的游戏关卡参看脚本教程部分。预加载发布将自动预加载所有场景中的资源。唯一例外的是Scene。只是因为第一个场景通常是一个闪屏通常需要尽可能快地显示它。为了确保你的所有内容都是预加载的你可以创建一个空的场景调用ApplicationLoadLevel()。在发布设置中确定这个空场景的索引为所有的后续关卡将被预加载。教程(Tutorials)这些教程可以让你一步一步地建立真正的工程。对于新手来讲建议首先进入GUI精华和脚本精华部分。二、场景搭建(BuildingScenes)该部分将解释用于创建游戏场景的核心元素。游戏物体(GameObject)在Unity中昀重要的就是游戏物体。理解什么是游戏物体如何使用它是非常重要的。该部分就将解释这个概念。什么是游戏物体?在你的游戏中的任何东西都是游戏物体。然而游戏物体自身并不能做所有的事情。在它们成为角色环境或者特定的效果之前它们需要特定的属性。但是物体中的每一个都会做许多不同的事情。如果每一个物体都是一个游戏物体我们怎么从一个静态房间中区分一个具有强大交互能力的物体?是什么使得游戏物体相互不同呢?答案就是游戏物体是一个容器。他们是一个空的可以容纳不同块的盒子而这些块组成了一个带有光照贴图的岛或是一个物理驱动的汽车。为了真正理解游戏物体你需要理解这些块这些块被称为组件(Components)。根据你要创建的物体的不同你可以添加不同组件到一个游戏物体中。将游戏物体想象为一个空的烹调罐组件为不同的组成游戏的配料。游戏物体与组件的关系现在我们知道游戏物体包含组件。我们将通过使用昀常用的组件变换组件(Transform)来讨论这两者之间的关系。打开任意一个场景创建一个新的游戏物体(使用ShiftCommandN)选择他并查看检视面板(Instpector)空物体的检视面板你可能注意到了这里有两个完全不同的部分。”GameObject”和”Transform”。属于游戏物体部分的是关于游戏物体自身的信息。这里只有物体的名称。变换部分显示变换组件的信息。当你创建一个新的物体时将会自动包含一个变换组件。所有的物体都会有一个变换组件。在Unity中你不可能创建一个没有变换组件的物体变换组件为所有物体提供了独特的功能。变换组件变换组件是昀重要的组件之一。它定义了游戏物体在场景视图中的位置旋转和缩放。如果游戏物体没有旋转组件那么它将不会存在世界中。参考变换组件部分。变换组件也可以使用一个被称为父子化(Parenting)的功能这个功能被编辑器(UnityEditor)利用并且是使用游戏物体昀关键的部分。父子化父子化的意思是你可以使一个游戏物体的变换值完全依赖于另一个不同游戏物体。简单来说就是一个物体随着另一个物体移动。当一物体是另外一些物体的父(Parent)物体时这个物体的旋转将影响所有的子(Child)物体。你可以在层次视图(HierarchyView)中通过拖动任何物体到另一个物体上来创建一个父。这将在两个物体之间创建父子关系。这种功能非常类似于文件夹树的功能一个游戏物体包含在另一个游戏物体中。需要指出的是所有子物体的变换值都是相对于父物体的这个被称为局部坐标(LocalCoordinates)。通过脚本你可以访问全局坐标(GlobalCoordinates)和局部坐标。一个游戏物体可以有任意多个子物体但是只能有一个父物体。子物体也可以是其它物体的父物体。你可以很容易的在层次视图中分辨一个物体是不是一个父物体。如果在它名称的左边有一个箭头那么它就是一个父物体。一个真实的父子层次树所有带有箭头的物体都是父物体记住所有的父子化的功能都是通过游戏物体的变换组件执行的而不是游戏物体自身。游戏物体脚本关系当你创建一个脚本(script)并将其附加到一个游戏物体上时这个脚本将在检视面板中作为一个组件显示。这是因为当它们被保存时脚本就变成一个组件。从技术角度来说脚本是作为组件的一种来编译的就像其它组件一样。任何在脚本中申明的公有变量都将在游戏物体的检视面板中显示为可编辑或可连接。编写脚本的时候你能够直接访问任何游戏物体类的成员。你可以在这里看到一个游戏物体类的成员列表。如果任何一个类作为一个组件附加在一个游戏物体上你就可以在脚本中使用成员名来直接访问这个组件。例如键入transform等同于gameObjecttransform。前面的gameObject是编译器自动加入的除非你要指定一个不同的物体。使用this可以访问当前的脚本组件。使用thisgameObject可以访问该脚本所依附的游戏物体当然你可以简单的使用gameObject来访问此游戏物体。逻辑上来说键入thistransform与tansform是相同的如果你想访问一个组件而该组件并没有作为一个游戏物体成员包含在其中你需要使用gameObjectGetComponent()使用组件(UsingComponents)组件是游戏中一个物体的行为和核心。它们是游戏物体的功能性模块。如果你还不理解游戏物体和组件之间的关系请参考游戏物体部分。一个游戏物体包含许多不同的组件。缺省情况下。所有的游戏物体都包含一个变换(Transform)组件。这是因为变换表示物体的位置旋转和缩放。没有变换组件游戏物体将不会有位置。尝试创建一个空的游戏物体。单击GameObject>CreateEmpty菜单项。选择新游戏物体并查看检视面板。每一个空的游戏物体都有一个变换组件可以使用检视面板来查看都有什么组件附加在游戏物体上。但一个组件被加入或删除的时候检视面板将显示当前附加的组件。可以使用检视面板来改变任何组件的属性(包括脚本)。添加组件可以通过组件菜单为当前的游戏物体添加一个组件。尝试添加一个刚体(Rigidbody)到刚创建的物体上。选择该物体并从菜单中选择Component>physics>Rigidbody。现在你将会发现刚体属性显示在检视面板中如果在该物体被选中的情况下按下播放键(Play)你将会有惊喜的发现。注意刚体是如何在一个空物体上添加功能的。附加了刚体组件的空物体可以附加任意数量的组件到一个游戏物体。一些组件可以与其他一些组件一起工作。例如刚体可以和任何碰撞物一起工作。刚体通过AgeiaPhysX物理引擎控制变换并且碰撞器允许刚体与其它的碰撞器碰撞和交互。一个不同的组件组合例子是一个粒子系统(ParticleSystem)。它们使用一个粒子发射器(ParticleEmitter)粒子动画(ParticleAnimator)和粒子渲染器(ParticleRenderer)来创建一组移动的粒子。可以通过点击位于检视面板头部的问号访问组件的参考页。编辑组件一个组件昀重要的方面是其可扩展性。当你添加一个组件到一个物体上时它有不同的可以调整的值或者属性(Properties)也可以在游戏中通过脚本来调整它。有两种不同类型的属性:值(Values)和引用(References)。下图中是一个具有音频源(AudioSource)组件的空游戏物体。在检视面板中所有音频源的值都是缺省的。这个组件包含一个单一的引用属性和七个值属性。音频剪辑(AudioClip)是一个引用属性。当这个音频源开始播放时它将尝试播放AudioClip属性所引用的音频文件。如果没有添加引用属性将会出现一个错误因为没有音品将被播放。你必须在检视面板中引用音频文件。你可以非常简单的从工程视图中将音频文件拖动到引用属性中。现在一个音效文件在音频剪辑属性中被引用组件可包含任何其它类型组件的引用文件或游戏物体。你只需拖动适当的引用到这个属性上。引用类型是非常有用和强大的尤其是在使用脚本时。参考脚本教程。音频剪辑中剩下的七个都是值属性。都可以通过单击并按下Enter键来调整它们。使用键盘输入值并按Enter保存它。你也可以通过使用option或rightclick或拖动数字属性来快速滚动这些值。音频剪辑中的值属性都是数字但是一些属性也可以是字符串。例如文本网格(TextMesh)组件包含一个文本(Text)属性这个属性可以接受字母数字字符。一些值可以包含字符例如文本网格中的Text属性测试属性当你的游戏处在播放模式(PlayMode)中时你可以在游戏物体的检视面板中修改它的属性。例如你或许想试验不同的跳跃高度。如果你在一个脚本中创建了一个跳跃高度(JumpHeight)你可以进入播放模式改变这个值并按跳跃键查看结果。然后不需要退出播放模式就可以再次改变这个值。当你退出播放模式时你的属性值将恢复到播放前的值因此你不会丢失任何工作。这个工作方式提供给你难以置信的方便来试验调整精简你的游戏而不必要花费大量的时间。移除组件如果你想移除一个组件在检视面板的头部使用option或右击然后选择移除组件(RemoveComponent)。或者你可以单击位于组件头部问号旁边的选项图标。所有的属性值都将丢失并且是不可恢复的。因此在移除组件前请确认你要这样做。组件脚本关系尽管脚本(Scripts)看起来都与组件不同事实是脚本是组件的一种类型。它是一种你自己创建的组件。你可以定义能够显示在检视面板中的成员并且它将执行你写出的任何功能。脚本组件有很多组件可以通过任何脚本直接访问。例如如果你想访问变换组件的变换(Translate)功能你只需要使用transformTranslate()或gameObjecttransformTranslate()。因为所有的脚本都是附加在游戏物体上的所以当你写transform的时候就暗示要访问当前脚本所在的物体的变换组件。当然这两者完全等价的。使用GetComponent()有许多组件不能成为一个游戏物体类的成员。因此你不能隐式访问它们必须显式访问它们。通过调用GetComponent(“componentname”)并存储一个引用到结果中。当你需要引用附加到该游戏物体上的其它脚本时这个方法是昀常用的。假设你在写脚本B并且你想做一个脚本A的引用而这两者是附加在相同的游戏物体上的。你可以使用GetComponent()来引用脚本。在脚本B中你可以使用scriptA=GetComponent(“ScriptA”)然后你就能够在脚本B中通过scriptAvariableName来访问任何脚本A中的变量。预设(Prefab)预设是一个存储在工程视图中可重用的游戏物体。预设可以被插入到任意数量的场景中并可多次出现在同一场景中。当你添加一个预设到场景中你就创建了一个它的实例。所有的预设实例都与原始的预设相关联并且本质上是它的一个克隆。不论在你的工程中存在多少实例当你对预设作了任何改变后你将看到这种改变被应用到所有的实例上。不论你的预设是单一的一个游戏物体或者是一组游戏物体在预设的变换层次中所作的任何改变都建碑应用到它的实例上。创建预设为了创建预设你需要一个新的空预设。这个空预设不包含任何物体并且你不能创建它的一个实例。将一个新的预设想象为一个空的容器等待使用游戏物体数据来填充。一个新的空预设它不能被实例化除非你使用游戏物体来填充它为了填充预设你需要使用在场景中已经创建的游戏物体。下面是精确的步骤:•在工程视图中选择一个你要放置预设的文件夹•从主菜单中选择Assets>Create>Prefab或者从工程视图的上下文菜单中选择Create>Prefab•命名该预设•在层次视图(Hierarchyview)中选择你要放入预设的游戏物体•将它们从层次使用中拖放到工程视图中在你执行了上述步骤后游戏物体和它的子物体都将被拷贝到预设中。现在预设可以在多个实例中被重用。在层次中的原始物体现在已经成了该预设的一个实例。创建更多预设的实例是非常简单的。实例化预设为了在当前场景中创建一个预设的实例从工程视图中拖动预设到场景(Scene)或层次视图中。这将从预设中拷贝所有父物体和所有的子物体。这些游戏物体被连接到(linked)预设在工程视图中将使用蓝色的文本来显示它们。其中三个物体是预设的实例继承继承意味着当预设改变时这些改变也将被应用到所有与之相连的物体上。例如如果你添加一个脚本到一个预设那么所有该预设的实例都将包含该脚本。然而你也可以修改单个实例的属性而不会破坏与预设的联系。一个链接物体检视面板(Inspector)中的所有公有属性都有一个复选框。这个复选框是一个重载标记(overrideflag)。如果该属性的重载标记被启用表示该属性将不会受到预设改变的影响。简单来说这允许你修改实例物体并使得它们不同于它们的预设而且又不会破坏它与预设之间的联系。一个实例物体和非继承一个实例物体和非继承当你在检视面板中修改一个属性的时候该属性的重载标记会自动启用。任何对已有属性的改变都不会打断与预设的联系。然而有一些改动将断开它下面是保持预设连接的基本规则:不能添加一个新的组件到一个实例上不能从一个实例上移除一个组件不能使用其他游戏物体作为实例的子物体如果你这样做你将看到一个警告消息出现并要求你确认。当一个实例与预设断开后对预设的修改将不会影响到这个游戏物体。如果你特意或是意外地断开了实例的连接你可以应用你的改变到预设并重新建立该连接。这将使得预设和所有的实例都发生改变。应用改变创建或编辑一个复杂预设的时候你可以非常容易的在场景中实例化它们编辑实例并应用改变到预设。这种工作方式将允许你在场景视图中查看并修改预设。一旦你修改完成选择该实例物体的根并从菜单中选择GameObject>ApplychangestoPrefab。所有的改变都被拷贝到预设中并应用到每个场景中所有的实例上。将物体连接到预设可以将预设应用于现有的没有连接的物体上。这将添加所有该物体没有的组件到物体上并将其连接到预设。在某些场合这是非常有用的。为了连接任何已有的物体到到预设按住Option并将预设从工程视图中拖放到层次视图的物体上。这个游戏物体将成为该预设的一个实例。这个操作不会改变预设本身但是会在你刚连接的物体上添加或移除一些组件和子游戏物体。导入预设当你放置了一个网格资源到你的资源文件夹中时Unity将自动导入该文件并生成一些看起来与预设相似东西。但它们并不是预设这只是简单的资源文件。注意资源文件图标与预设图标是有点不同的这个资源在场景中作为一个游戏物体被初始化。可以在该游戏物体上添加或移除组件。然而你不能将任何改变应用到资源自身上因为这需要添加一些数据到该资源物体上!如果要创建需要重用的物体你应该将资源实例作为预设。当你已经创建了一个资源实例可以创建一个新的空预设并拖动游戏物体到该预设上。现在你拥有了一个连接到该物体的标准预设。下面给出了一些详细的步骤:•从工程视图中拖动一个资源文件到场景或层次视图中。•修改该资源(例如添加脚本子物体组件等等)•创建一个新的空预设。从菜单中选择

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/69

Unity3D入门教程中文版

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利