关闭

关闭

封号提示

内容

首页 Unity3D_V3.X中文快速入门教程.pdf

Unity3D_V3.X中文快速入门教程.pdf

Unity3D_V3.X中文快速入门教程.pdf

上传者: yubaojun12 2012-05-15 评分 5 0 282 38 1282 暂无简介 简介 举报

简介:本文档为《Unity3D_V3.X中文快速入门教程pdf》,可适用于IT/计算机领域,主题内容包含强大的跨平台D游戏开发工具UnityD其实本书早就应该面世了的由于期间牵涉到了UnityD这款软件的版本不断更新与升级我的教程也随之改了又改书也就一符等。

强大的跨平台D游戏开发工具UnityD其实本书早就应该面世了的由于期间牵涉到了UnityD这款软件的版本不断更新与升级我的教程也随之改了又改书也就一拖再拖的耽搁了下来。不过还好的是UnityD最新的正式版并没有让我们失望其强大的游戏制作功能已经达到让人膛目结舌的地步。尤其是它在里面制作那款第一人称战争游戏画质效果丝毫不逊色于当下十分流行的《穿越火线》、《战地之王》等等的游戏。下图为Demo中的截图效果:UnityD的官方网站:http:unitydcomUnityD的下载地址:http:unitydcomunitydownload下载好之后您必须到它官方网站注册一个邮箱才能获得天试用。如果您觉得对这款软件满意还可在购买之后继续使用。其中购买pro版本的UnityD会获得更多的功能。一、UnityD的基本界面介绍场景面板:该面板为UnityD的编辑面板您可以将您所有的模型、灯光、以及其他材质对象拖放到该场景中。构建游戏中所能呈现景象。动画面板:与场景面板不同该面板是用来渲染场景面板中景象的。该面板不能用作编辑但却可以呈现完整的动画效果。层次清单栏:该面板栏主要功能是显示放在场景面板中所有的物体对象。项目文件栏:该面板栏主要功能是显示该项目文件中的所有资源列表。除了模型、材质、字体等还包括该项目的各个场景文件。对象属性栏:该面板栏会呈现出任何对象的所固有的属性包括三维坐标、旋转量、缩放大小、脚本的变量和对象等等。场景调整工具:可改变您在编辑过程中的场景视角、物体世界坐标和本地坐标的更换、物体法线中心的位子以及物体在场景中的坐标位置缩放大小等等。下面我重点详解一下菜单栏:菜单栏中包含有八个菜单选项:分别是File【文件】Edit【编辑】Assets【资源】GameObject【游戏对象】Component【组件】Terrain【地形】Window【窗口】Help(帮助)。其各自又有自己的子菜单:主菜单包含的子菜单File【文件】NewScene【新建场景】OpenScene【打开场景】SaveScene【保存场景】SaveSceneas…【场景另存为…】NewProject…【新建工程文件】OpenProject…【打开工程文件】SaveProject…【保存工程文件】BuildSettings…【创建设置】(这里指创建游戏设置)BuildRun【创建并运行】(这里指创建并运行游戏)Exit【退出】Edit【编辑】Undo【撤销】Redo【重复】Cut【剪切】Copy【拷贝】Paste【粘贴】Duplicate【复制】Delete【删除】Frameselected【当前镜头移动到所选的物体前】SelectAll【选择全部】Preferences【首选参数设置】Play【播放】Pause【暂停】Step【步骤】Loadselection【载入所选】Saveselection【存储所选】Projectsettings【工程文件设置】(包含:可执行文件EXE图标设置画面抗锯齿功能设置等)Rendersettings【渲染设置】(如果您觉得整体画面的色彩质量不尽人意可在此处进行调节)Graphicsemulation【图形仿真】(主要是配合一些图形加速器的处理)Networkemulation【网络仿真】(可选择相应的网络类型进行仿真)Snapsettings【临时环境】Assets(资源)Reimport【重新导入】Create【创建】(包含:文件夹、材质、脚本等等)ShowinExplor【显示项目资源所在的文件夹】Open【打开】ImportNewAsset【导入新的资源】Refresh【刷新】ImportPackage【导入资源包】ExportPackage【导出资源包】SelectDependencies【选择相关】Exportoggfile【导出OGG文件】ReimportAll【重新导入所有】SyncVisualStudioProject【与VS项目同步】GameObject【游戏项目】CreateOther【创建其他组件】CenterOnChildren【子物体归位到父物体中心点】MakeParent【创建父集】ClearParent【取消父集】ApplyChangesToPrefab【应用变更为预置】MoveToView【移动物体到视窗的中心点】AlignWithView【移动物体与视窗对齐】AlignViewtoSelected【移动视窗与物体对齐】Component(组件)Mesh【网络】Particles【粒子系统】(能打造出非常棒的流体效果)Physics【物理系统】(可使物体带有对应的物理属性)Audio【音频】(可创建声音源和声音的听者)Rendering【渲染】Miscellaneous【杂项】Scripts【脚本】(Unity内置的一些功能很强大的脚本)CameraControl【摄像机控制】Terrain(地形)CreateTerrain【创建地形】ImportHeightmapRaw【导入高度图】ExportHeightmapRaw【导出高度图】SetResolution【设置分辨率】CreateLightmap【创建光影图】MassPlaceTrees【批量种植树】FlattenHeightmap【展平高度图】RefreshTreeandDetailPrototypes【刷新树及预置细节】Window(窗口)NextWindow【下个窗口】PreviousWindow【前一个窗口】Layouts【布局】Scene【场景窗口】Game【游戏窗口】Inspector【检视窗口】(这里主要指各个对象的属性)Hierarchy【层次窗口】Project【工程窗口】Animation【动画窗口】(用于创建时间动画的面板)Profiler【探查窗口】AssetServer【源服务器】Console【控制台】Help(帮助)AboutUnity【关于Unity】Enterserialnumber【输入序列号】UnityManual【Unity手册】ReferenceManual【参考手册】ScriptingManual【脚本手册】UnityForum【Unity论坛】WelcomeScreen【欢迎窗口】ReleaseNotes【发行说明】ReportaProblem【问题反馈】二、UnityD的一个简单预览每个UnityD版本都会自带一个demo源文件。在正式版中自带的Demo就是网上展示的那款强大的射击游戏。在一般情况下您只要第一次打开UnityDv就会看见自带的那个demo项目文件。但如果UnityD并没有打开这个项目文件您可以在UnityD里的“File”菜单下点击“OpenProject…”在随后弹出的“Unity–ProjectWizard”对话框中点击“OpenOther…”按钮在“C:DocumentsandSettingsAllUsersDocumentsUnityProjects”这个路径下找到项目文件夹“BootcampDemo”选择并打开它。打开项目之后在舞台场景面板中依然什么都没有显示的的话请在Project【项目文件栏】双击场景文件。稍等片刻之后该舞台场景的所有对象就可导入舞台场景面板中。导入成功之后效果如下图所示:点击一下中间的播放按钮做一下测试(如果您的机器配置不是太高可能等待的时间会稍长)。过了不一会您就可以在Game【动画面板】中看到一个正在运行的射击游戏了。在这个游戏场景中您能看到比其他游戏还要细腻的游戏画面例如各个物体的实时阴影。当然如果您的机器配置比较高那您还可以点击“ESC”键来将画质进一步调高。我们将画面质量调高之前和画面质量调高之后的效果做一下对比如下所示:看看河水是不是真实了许多。三、在UnityD中创建一个山势地形图第一步:打开UnityD软件它可能会自动载入上一次的“BootcampDemo”项目文件。不管它在软件打开之后点击“File”>“OpenProject…”在弹出的“Unity–ProjectWizard”对话框中找到“ProjectLocation:”输入创建项目的文件夹地址或者点击后面的“Browse…”选择一个文件夹地址(注:已创建UnityD项目的文件夹不能当作新创建项目的文件夹来使用)然后在“Importthefollowingpackages:”中选择要导入的项目文件包每个文件包都带有一些插件功能由于我们第一次创建项目文件所以我们将所有的复选框都打上勾。但这样做会使得UnityD在开始加载的时候速度偏慢等以后我们大家对各个包的作用熟悉了在创建UnityD项目文件的时候我们只勾选需要使用到的包就可以了。全部设置好之后我们点击“Create”创建项目。第二步:在创建一个新项目之后我们会看见新项目的各个面板中只有Project【项目文件栏】包含了“StandardAssets”和“StandardAssets(Mobile)”两个文件夹这两个文件夹里面装的是之前所导入项目文件包里的所有文件。除此之外其他版面都是空空如也。不要紧万丈高楼平地起咱们马上就利用文件包和系统功能来丰富各个面板。首先我们点击菜单栏上的“Terrain”>“CreateTerrain”创建一个带有地形属性的平面。如图所示:但我们发现Game【动画面板】中依然没有任何画面。其实道理很简单就像演唱会的实况直播。您把场景全部搭建好了演员请上场了但没有加上摄像机电视机前面的观众有如何能够收到演出的信号呢?第三步:点击“GameObject”>“CreateOther”>“Camera”在场景中创建一个摄像机这时您就可以在Game【动画面板】中观看到摄像机所观察到的景象了。下面我们来改变一下这个光秃秃的地面。第四步:点击菜单栏上的“Terrain”>“SetResolution…”弹出“SetHeightmapresolution”面板来调节地面的大小。在“TerrainWidth”的后面将数字改成然后再在“TerrainLength”的后面将数字改成设置好之后点击“SetResolution”按钮来将原来的地形改成*大小的地形。第五步:在场景面板中选中刚才创建的地面对象“Terrain”如果您觉得场景中不是很好选择所需要的对象那么您还可以在Hierarchy【层次清单栏】选中您所需的对象该栏中包含了所有场景面板中的物体对象。选中地面对象“Terrain”之后我们会在Inspector【属性面板】中马上发现与之对应的属性包含有:Position【坐标】、Rotation【旋转量】、Scale【缩放尺寸】、以及地面对象固有的“Terrain(Script)”和“TerrainCollider”。如下图所示:其中这个像画笔一样的按钮是用来改变地面材质的。我们点击它之后可以在下面找到点击“EditTextures…”>“AddTexture”来到“AddTerrainTexture”面板。然后我们单击后面的圆圈就可以为地面添加您所喜欢的材质了。选择好之后请点击“Add”按钮来填入新材质。添加材质之后的地面如图所示:如果您觉得这个地形的材质过于单调那么您可以继续点击“EditTextures…”>“AddTexture”来添加第二个材质然后在“Brushes”中选择您想要的笔刷形状接着在场景面板中刷出新材质的区域范围。第六步:点击这三个按钮其中的一个选择合适的笔刷在地形图中可以刷出高山的形状如图所示:如果您觉得现在山峰太高或者说某处的山峰有些多余。您可以按住Shift键不放用刚才的笔刷进行反向平刷。第七步:接下来就是给地形种草和种树了。具体的种草按钮是而种树按钮是。而他们的设置方法与地形材质的设置方法十分雷同都是先点击按钮来添加您所需要的花草或树木然后在场景面板中刷出您所需要的区域。如图所示:这里大家需要注意一下UnityD在编辑模式下为了节约资源采取了资源剔除的方法。如果您在利用笔刷“种草”的过程中没有看到您所“种”上去的草这时您只需将画面拉近即可观察到效果。第八步:点击来设置地形上的风速、阴影等效果。第九步:地形的所有效果已经设置完毕但我们发觉在Game【动画面板】画面似乎很暗这是由于没有加入灯光的缘故。点击“GameObject”>“CreateOther”>“DirectionalLight”创建一个太阳光。太阳光和自身的位置没有多大的关系只与自身的角度有关这和我们平时生活中的太阳光是一致的。所以为了让场景变得更亮我们就需要用到场景调整工具中的旋转按钮来对太阳光进行旋转。当然您也可以在属性面板中对它进行调节。根据我们生活的常识当太阳光直射地面的时候光线最强。调整之后效果如下:这时的Game【动画面板】画面是不是亮了许多?第十步:为了让摄像机全方位的观察我们刚才所创建的场景您可以在Project【项目文件栏】中找到、、这三个脚本文件并将他们依次拖放到场景中的摄像机上面。如果您觉得Project【项目文件栏】中的文件过多不容易寻找这三个文件您还可以在Project【项目文件栏】上方的搜索框输入他们的名字进行搜索这样很快就能找到对应的文件了。放置完毕之后点击测试按钮您就可以身临其境的在您刚才创建的Game【动画面板】中进行漫游了。用鼠标控制视角用键盘的方向键控制行走。漫游的过程中您可以清晰的看见您创建的草随微风缓缓摆动。第十一步:再次点击测试按钮退出动画模式。下面我们来为场景加上蓝天和光照效果。选中场景中的摄像机对象然后点选菜单栏中的“Component”>“Rendering”>“Skybox”为摄像机添加一个天空盒。添加成功之后您就能在摄像机的属性面板中找到刚才添加的天空盒了。接着我们去Project【项目文件栏】找到“StandardAssets”文件夹下的“Skyboxes”文件夹。这里面摆放了许多关于天空的材质球您只需要选中一个您喜爱的天空材质球并拖放给摄像机里的天空盒【Skyboxe】的材质属性【CustomSkybox】就可让场景的天空布满这种材质效果。选中场景中的光照对象“Directionallight”然后在它的属性面板中找到“Flare”并点选它后面的圆圈。在它弹出的“SelectFlare”对话框中选中双击这种光照效果这样就可以使得您在动画模式中清楚的看见太阳所在的位置。再运行一下动画看看效果:第十二步:为了让场景更加的逼真我们还可以为场景添加光照阴影效果。具体的做法如下:选中光照对象“Directionallight”在它的属性面板中找到“ShadowType”【阴影模式】它默认的是“NoShadows”【没有阴影】您可以将它改成“SoftShadows”【软渲染阴影】或是“HardShadows”【硬件渲染阴影】。“SoftShadows”【软渲染阴影】以消耗CPU的计算为代价来产生阴影效果这种模式运行速度较慢但对于机器配置比较落后的使用者是唯一的选择。“HardShadows”【硬件渲染阴影】可利用新一代GPU的显卡加速功能来为游戏进行阴影效果的渲染处理其运行速度比较快渲染效果也比较理想。但无论您选择哪一个选项动画场景的物体都会相对于阳光产生阴影效果。如图所示:第十三步:所有的场景效果调试完毕按下CtrlS来保存场景文件取名叫做“terrain”以便日后调用。如果保存成功您会在您项目的Project【项目文件栏】中看到一个这样的文件。四、为地形添加水源、各种水流以及水下的模糊效果。第一步:打开UnityD软件并导入上一次的“firstUnity”项目文件。由于我在上一次的地形创作中就已经在山峰之间制作了一块洼地它可以作为一个承载湖水的地方。如果您上次的创作并没有这样的地形那么请您重新创建一个山势地形图就当作自己的一次练习吧。在场景面板中点击Y方向的绿色箭头切换到顶视图这样可以便于我们很快的找到洼地的所在地方。然后用鼠标滚轮迅速的推进观测距离。接着再到Project【项目文件栏】找到“StandardAssets”文件夹下的“Water(ProOnly)”【仅限专业版使用如果是非专业版请转到‘Water(Basic)’】文件夹中拖拽一个DaylightWater【白天光照效果的水模型】到洼地的中央并利用场景调整工具中的缩放工具将水模型调整到合适的大小。紧接着我们再点击场景面板中右上角的白色小方块将视角切换到透视图。然后利用场景调整工具中的位移工具将水模型调整到合适的高度。这时您只需在播放时将摄像机移动到洼地这个地方就可以看见湖水的效果了。第二步:但这样的效果略显单调了一些既然是山中泉水我们还得有一些瀑布和溅起的浪花。为了节约时间我们直接在Project【项目文件栏】上方的搜索框输入字符“waterf”就可以查出如图所示的材质和模型。在这里面中“WaterFountain”是一个喷泉模型“WaterSurfaceSplash”是一个水面的飞溅模型“WaterFall”是一个瀑布模型。我们先拖入一个“WaterFall”到洼地然后利用场景调整工具来调整它的位置和角度。这时的瀑布略显小了一些我们可以先选中它然后到它的属性面板去调整成您想要的效果。再接着我们在瀑布下的水面上方放置一个水面飞溅模型“WaterSurfaceSplash”。由于它的高度一定要和水面高度一致所以我们先点选水平面看看它Y轴的数字然后在点选“WaterSurfaceSplash”到它的属性面板中输入同样的Y轴数字以确保它浮在水面上。紧接着到它的属性面板中调整它的属性让改模型变成您想要得到的效果。第三步:我运行一下游戏然后将镜头移动到泉水的水面下。大家会发现水下的视觉和在平地上的视觉效果是完全一样的。这和我们平时的生活现状是不相符的所以我们还得做一下相应的调整。首先点击“GameObject”>“CreateOther”>“Cube”创建一个立方体并运用场景调整工具将它调整到整个水洼的实体部分。(注:运用其他形体也可以其主要是用来覆盖水洼的实体部分以用来和摄像机作碰撞检测让摄像机的镜头变得模糊。)接着确保您创建的这个Cube是被选中状态到它的属性面板中将“BoxCollider”卷展栏中的“IsTrigger”复选框打上勾(如果这里不打勾这个立方体将作为一个实物当摄像机撞上它时就像撞上一堵墙无法通过)。然后再将“MeshRenderer”卷展栏下的所有复选框全部点掉使这个立方体只作为一个形体存在而不让它在场景中作出任何的显示渲染。接着在属性面板的最上方将它的名字由“Cube”更改为“WaterColler”,再选中“Tag”的下拉框>“AddTag…”新添加一个“WaterColler”的标签分类。然将这个“WaterColler”水洼碰撞体的Tag也改成“WaterColler”。第四步:在菜单栏中选中“Assets”>“Create”>“JavaScript”新添加一个JS脚本。到Project【项目文件栏】找到刚才新建的JS脚本按下F键更改它的名字为“UnderWaterEffect”并双击编辑它输入如下代码:privatevardefaultFog=RenderSettingsfogprivatevardefaultFogColor=RenderSettingsfogColorprivatevardefaultFogDensity=RenderSettingsfogDensityprivatevardefaultSkybox=RenderSettingsskyboxvarnoSkybox:MaterialfunctionOnTriggerStay(hit:Collider){if(hitgameObjecttag=="WaterColler"){RenderSettingsfog=trueRenderSettingsfogColor=Color(,,,)RenderSettingsfogDensity=RenderSettingsskybox=noSkybox}}functionOnTriggerExit(hit:Collider){if(hitgameObjecttag=="WaterColler"){RenderSettingsfog=defaultFogRenderSettingsfogColor=defaultFogColorRenderSettingsfogDensity=defaultFogDensityRenderSettingsskybox=defaultSkybox}}输入完毕按CtrlS保存代码并关闭退出然后将代码拖拽给摄像机使用。重新运行一下游戏将摄像机移动到水下就可以看到一片模糊的景象了。在UnityD中关于水的设置是一门非常深的研究课程。UnityD群里的“黑魔麟”、“模模糊糊”等都有比较深的造诣但在这本书中我并不作出过多的阐述因为本人也在联系各位UD高手们打造一本UD的黄金书籍这里大家先入个门。下面为各位高手们制作的一些水效截图:五、UD中脚本的简单概述和前面的所学D软件一样UD作为一个类播放器的D集成软件有着良好的时间层级关系。比方说Start()里面的语言总是在播放器初始化时执行一次而后就不再执行。例如下面用JS写的一个列子:在菜单栏上选中“Assets”>“Create”>“JavaScript”。functionStart(){print("Gameisstart")}将这段代码拖拽给Hierarchy【层次清单栏】中任意一个对象您就会在播放器刚开始播放的时候在左下方的控制台面板中看到“Gameisstart”这样一句话证明您的Game播放器已经开始工作了。(*注:这个控制台面板以后大家会经常使用到它因为它可以用作您代码片段的调试以及您程序出错了的提示框详细的提示您出错的原因所在。)当然有了初始化函数就一定会有我们的刷帧函数Update()该函数内所有的代码会在播放器每播放一帧时执行例如下面用JS写的一个列子:在菜单栏上选中“Assets”>“Create”>“JavaScript”。functionUpdate(){print(Timetime)}该代码会在播放器每播放一帧的时候显示游戏开始到现在所消耗的时间值。UD中有着非常强大的接口处理功能您可以在代码中为对象制定任意一个空接口用于和对应类型的对象进行交互例如下面用JS写的一个列子:在菜单栏上选中“Assets”>“Create”>“JavaScript”。varAddSpeed=functionUpdate(){transformTranslate(,,AddSpeed)}该代码为对象添加了一个在Z方向上的初始速度如果在没有其他外力的作用下物体将一直沿着Z方向以的速度行驶。并且当您将这段代码拖拽给一个物体对象之后它的这个初始速度可以作为一个接口在它的属性面板中进行修改。除了数字作为接口外接口还可以是对象例如下面用JS写的一个列子:在菜单栏上选中“Assets”>“Create”>“JavaScript”。varAddSpeed=定义一个变换对象cubeGOvarcubeGO:TransformfunctionUpdate(){在逐帧播放的过程当中一旦按下G键cubeGO就以AddSpeed速度朝Z轴方向运动if(InputGetKey(KeyCodeG)){cubeGOTranslate(,,AddSpeed)}}您可以将这段代码拖放给Hierarchy【层次清单栏】中任意一个对象因为它在这里定义了一个Transform类接口对象cubeGO所以它几乎与拖拽的对象无关。拖拽成功之后来到该物体的属性面板中您可以看到这样的一个属性卷展栏cubeGO的后面有个很明显未定义对象填写栏“None(Transform)”,然后我们把想要使之运动的物体拖拽到这个上面来如图所示:当我们运行游戏时只要按下“G”键就可以看到Cube作为“cubeGO”的指代对象朝着“Z”轴方向运动了。六、QLW'中的C#FULSW编程的注意事项也许您在学习UD之前已经是一位C#的编程高手了。但在UD中的C#并像真正的C#那般强大在UD的C#中必须全部继承自MonoBehaviour像这样的格式publicclassNewBehaviourScript:MonoBehaviour{}。下面为一段C#Script完整代码:usingSystemCollectionsusingUnityEnginepublicclassNewBehaviourScript:MonoBehaviour{IEnumeratorSomeCoroutine(){yieldreturnyieldreturnnewWaitForSeconds()}}除此之外它不支持空间命名但官方说它们很有可能会在以后的版本中支持这一功能。在UD中JavaScript和C#Script的编程效果近乎一样。只是为了不同程序爱好者设立了不同的编程模式。并且JavaScript所编写的代码对象可以和C#Script编写的代码对象交叉使用并不发生任何冲突。七、利用MonoDevelop编写代码来和UD协同作战。和我们前面所学到的软件一样UD同样有着一个为它提供强大编程支持的脚本编辑器《MonoDevelop》。这个软件会在您安装UnityD的时候自动安装。您可以在计算机的开始菜单下的UnityD目录中找到这个软件如图所示:打开MonoDevelop之后点击新建按钮。直接单击“Unity”就可以看到它所对应的几个编程语言其中的UnityScript指的就是JavaScript。同样的在里面输入代码就会弹出相应的提示使用起来比用UD中的脚本编辑方便了许多。如图所示:八、修改MonoDevelop编辑器为UD的默认编辑器。通常情况下Ud默认的编辑器都是“UniSciTE”它用起来十分轻巧快捷就像记事本一样。但如果要开发一些大型的项目显然“UniSciTE”简单的功能就不足以支撑它的工作了。但如果您每回在编辑脚本的时候都去用“MonoDevelop”一个一个的打开又显得很麻烦。所以我们就要在UD中做一些设置让“MonoDevelop”成为默认的脚本编辑器。具体的步骤是:在菜单栏中找到“Edit”>“Preferences…”在弹出的“UnityPreferences”对话框中找到“ExternalScriptEditor”并将它后面的下拉框选中为“Browse…”浏览到我们“MonoDevelop”可执行文件存放的地方。这个路径一般都和您UD文件夹在一起比方说您的UD安装在D盘的ProgramFiles文件夹中那么您可以直接在这个路径“D:ProgramFilesUnityMonoDevelopbin”找到“MonoDevelopexe”这个文件。设置好之后重新在UD中点选下脚本文件发现已经能用“MonoDevelop”软件打开了但第一次打开的时候会稍显慢一点因为“MonoDevelop”要加载很多东西。效果如下图所示:(注:如果您是一个C#和VisualStudio忠实编程爱好者你可以用同样的方法来设置VisualStudio的软件的路径让VisualStudio成为UD的脚本默认编辑器。)九、向UD中导入外部模型UD支持多种外部模型格式但它并不是对每一种外部模型的属性都支持。具体的支持参数您可以对照如下列表:网络材质动画骨骼Maya的mb和ma格式DStudioMax的max格式CheetahD的jas格式CinemaD的cd格式Blender格式的blendCarraraCOLLADALightwaveAutodeskFBX的dae格式XSI的x格式SketchUpProWingsDDStudio的ds格式Wavefront的obj格式DrawingInterchangeFiles的dxf格式下面的实例中我们利用DMax来制作一个完整的动画并导出FBX的格式给UnityD使用。第一步:创建一个名为“Turret”的项目文件夹。然后打开UnityD软件选择“File”>“NewProject…”创建一个新工程项目在项目路径中点击“Browse…”选择找到我们刚才的“Turret”文件夹并点选我们需要导入的包文件然后点击“Create”来创建一个UnityD是无法以非空的文第二步:打开DMax软件制作一个炮塔模型并将制作好的模型保存在“Turret”文件夹中的“Assets”【资源】文件夹下面。下图为DMax中的模型样图:新的工程文件。(注:这个步骤千万不能乱因为件夹作为工程文件夹来创建项目的。)为了保障模型在UD中的显示效果我们给模型添加一些光照并将添加了光照的模型渲染为烘焙贴图这样可使得模型本身带有一些明暗纹理效果。其烘焙贴图的方法请参看第三章的小节烘焙之后的效果图如下所示:烘焙完毕之后按住CtrlS保存文件。质贴图文件了。第三步:重新来到UnityD的软件环境中这时大家已经能在Project【项目文件栏】看到我们刚才用DMax导出的模型文件和材接着利用我们前面章节中所学到知识为场景文件添加地形和阳光。然后在地形图上找一个合适的位置将我们的炮塔拖拽上去。但这样看着似乎太小了一点。在改变外部模型的尺寸的时候有一个技巧您不必在场景中修改它。而可以到该模型所在的属性面板中去修改它的“ScaleFactor”大小。它的默认值是我们在这里将它改为并在属性面板的最下方找到“Apply”按钮点击它让模型尺寸在UD中得到改变。再来看看我们的炮塔是不是雄壮了许多?但是我们并不赞同这样的模型导入方法。因为根据官方的说法他们建议您将做好的模型导出成为FBX格式的模型文件给UnityD使用。也许这样会使模型在UnityD中的运行速度得以提高吧。所以说我们还得回到DMax的软件环境下面做一下导出工作。第四步:在DMax中点击File【文件】>export【导出】将模型文件导出为FBX文件保存到“Turret”文件夹中的“Assets”【资源】文件夹下面。注意一下弹出的“FBXExport”面板这里包含了模型动画、骨骼工具、材质等等一系列的导出设置。如果您没有在模型中添入这些东西就请您将不必要的复选框点掉。第五步:回到UnityD的软件环境在Hierarchy【层次清单栏】中选中原先的炮塔模型按下Delete键将其删除。然后在Project【项目文件栏】中找到刚刚导入FBX模型点击选中它用前面修改模型尺寸的方法来修改FBX模型的尺寸。然后将其放置在场景中合适的位置上。十、预制对象Prefab及其它的调用方法。还记得我们在第二章中对Flash的学习吗?如果您不想让某些物体出现在舞台上但您又想通过代码随时的来调用这些物体。就比方说游戏中的炮弹或子弹这类似的物体。那我们就要先在flash的库中创建一个这样的影片剪辑但并不把它拖放到舞台上显示然后用鼠标的右键点击它并在它的属性面板里面将“为ActionScript导出”复选框打上钩这便可以随时随刻的用代码将它调入或调出舞台了。UnityD中同样有着类似的功能但它和flash在用法上稍稍不同。具体的做法是:在菜单栏中点选“Assets”>“Create”>“Prefab”在Project【项目文件栏】中创建一个预制类对象这时您会发现预制类对象前面的小方框是灰色的这说明它是一个空对象如果您现在用代码调用它您并不能看到任何的东西。但如果您在Project【项目文件栏】中向它拖入任意物体那么你立马就可以在调用“newprefab”的地方看到这个被拖入的物体并且看见“newprefab”前面的图标变为了实际的蓝色。预置类对象“Prefab”就像一个空着的盒子您可以为它填充任何的东西并利用代码在舞台上显示它。十一、图形用户界面类GUI您在玩很多D游戏的时候不知是否注意到在游戏界面中总有一些图形和文字信息是不随着D视觉的改变而改变的。这也是由于游戏本身的要求所决定的比方说英雄的生命值聊天窗口的文字信息等等。这一些不被改变的类就被称作GUI。下面我们一起在UD中简单做两个GUI实例来说明它的用法。第一步:打开UnityD它会自动导入上一次的工程项目。为了节省篇幅我们还是使用前面的“Turret”工程项目来做说明。假设我们就现在的项目来做一个炮弹发射的游戏想想我们都需要做写什么工作?是不是应该在画面的一个角落显示炮弹填发的情况?就像大多数D游戏那样您的魔法值在使用完毕之后需要一定恢复时间。第二步:用PhotoShop制作弹药的填发时间图。并将它们全部保存为PNG文件到工程项目的“Assets”文件夹内。上面为PhotoShop制作的填发时间图一共张。第三步:回到UnityD软件环境中为了归类我们在Project【项目文件栏】中右键>“Create”>“Folder”新建一个文件夹并按F将其更名为“shortTime”再将导入的五张图片拖入文件夹内。第四步:在菜单栏中选中“GameObject”>“CreateOther”>“GUITexture”创建一个GUI图标这时大家会在Scene【场景面板】中看到一个默认UnityD的图标如图所示:在Hierarchy【层次清单栏】选中它之后来到它的属性面板中点击Texture后面的来改变它的图标为我们刚导入弹药填充图标。再通过属性面板中其他属性值的更改得到图标最终的显示大小和显示位置如图所示:第五步:在菜单栏中选中“GameObject”>“CreateOther”>“GUIText”创建一个GUI文字在图标的旁边作为说明。其文字输入、文字大小、文字样式等等也同样在它的属性面板中调节。十二、怎样让UnityD支持中文字体在上一节当中大家学习了GUI图形和文字的使用方法。但细心一点的朋友可能会发现在“GUIText”中输入中文是完全没有作用的这是由于现在UnityD还不支持中文的缘故。但是这并不能影响我们对中文作品的开发。UnityD中可以将任意的字体作为材质文件赋予“GUIText”其中就包含中文字体。具体做法如下:第一步:将您需要的中文字体拷贝到项目文件中的“Assets”文件夹内。第二步:在菜单栏中选中“GameObject”>“CreateOther”>“GUIText”创建一个GUI文字然后在它的属性面板中找到“Font”点选他后面的将它的字体类型改为您刚才拷贝进来的那个字体接着在属性面板中找到“Text”后面的输入框输入您想要的输入的中文字体。观察场景面板得到如下效果:十三、制作炮塔的旋转第一步:给炮塔的上半部分添加一个旋转函数使得炮塔随着鼠标在X方向上的移动而移动。在Project【项目文件栏】中右键>“Create”>“JavaScript”新建一个JavaScript函数并按F将其更名为“turretRotate”然后输入如下代码。varspeed:float=旋转速度functionUpdate(){这里乘以TimedeltaTime函数是为了使旋转效果更加的平滑。transformRotate(Vector(,,InputGetAxis("MouseX"))*TimedeltaTime*speed)}点选场景面板中的炮塔找到炮塔上半部分所对应的对象如图:接着将刚才的“turretRotateJs”文件拖拽给这个对象。第二步:选中摄像机对象“Camera”,点选菜单栏中的“Component”>“CameraControl”>“SmoothFollow”为摄像机添加一个平滑的跟随代码但这里并没有设置跟随对象。第三步:继续选中摄像机对象在它属性面板中找到“SmoothFollow(Script)”卷展栏下的“Target”,然后将炮塔上半身对象拖放给它。第四步:点击测试按钮试着移动下鼠标看看炮塔的旋转效果。摄像机随着炮塔的旋转而旋转而GUI图标和GUI文字一直在左上方效果很不错。十四、制作炮弹的射击和爆炸效果第一步:点击菜单栏的“GameObject”>“CreateOther”>“Sphere”创建一个球体模型并利用场景调整工具将其调整到和炮口差不多的大小。第二步:找两张金属材质的贴图第一张为基本RGB贴图第二张为普通显示贴图。图一图二这样做是为了一会在给物体赋予材质时让它有立体的感觉。您也可以只给物体找一张贴图材质。找到想要的材质贴图之后将它们拷贝到项目文件夹中“Assets”文件夹内。第三步:选中刚才的球体模型在它的属性面板中找到材质球下拉选项框。将它的渲染模式改为“BumpedDiffuse”紧接着将深色的材质贴图拖放给第一个材质框将浅色的材质贴图拖放给第二个材质框。得到一个带有材质感的炮弹如图所示:第四步:在菜单栏中点选“Assets”>“Create”>“Prefab”创建一个预制类对象并按下F键更改它的名字为“Shot”然后将球体模型模型拖入到预制对象中并删除场景面板中的炮弹。但这时的球体模型仅仅是在外观上有了炮弹的样子我们还得让它有炮弹一样的物理特性。接着在菜单栏中点选“Component”>“Physics”>“Rigidbody”为炮弹添加一个刚体属性。第五步:在菜单栏中点选“GameObject”>“CreateEmpty”创建一个空对象放置在炮口作为一会炮弹发射的起始点。按下F将其更名为“FirePoint”。然后在Hierarchy【层次清单栏】中把“FirePoint”拖到炮塔上半身的旋转对象中去这样可以使得它和炮塔一起旋转。第六步:为炮弹创建一个发射函数。在Project【项目文件栏】中右键>“Create”>“JavaScript”创建好之后按下F将其更名为“openfire”。然后双击该文件输入如下代码:定义一个变换对象FirePoint作为发射点对象的代码的接口varFirePoint:Transform定义一个刚体对象Bullet作为炮弹对象的代码接口varBullet:RigidbodyfunctionUpdate(){当鼠标左键按下的时候就在场景中创建一枚炮弹并发射它if(InputGetMouseButtonDown()){varclone:Rigidbody重新实例化对象clone让它的坐标位置和方向与发射点对象的一致。clone=Instantiate(Bullet,FirePointposition,FirePointrotation)实例化完毕让炮弹以的速度朝前发射。clonevelocity=transformTransformDirection(Vectorforward*)}}输入完毕之后将该代码拖拽给Hierarchy【层次清单栏】中的发射点对象“FirePoint”然后我们会在属性面板中的“FirePoint”接口和“Bullet”接口对象为空。所以我们必须得把发射点对象“FirePoint”和炮弹对象“shot”拖到两个对应的接口上。第七步:按下测试按钮看看效果。大家会发现朝前发射的炮弹在碰到山体之后都被弹了起来。所以说此时的炮弹顶多只能算得上一个钢弹它并不会

精彩专题

职业精品

上传我的资料

热门资料

资料评价:

/ 131
所需积分:2 立即下载

意见
反馈

返回
顶部

Q