版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(第三版)Unity虚拟现实与游戏从0到1第3章:Unity编辑器与3D模型课程目录01123编辑器进一步讲解预制体Prefab世界局部左手坐标系45脚本基础知识案例开发第一章:编辑器进一步讲解Unity菜单栏项目(Project)视图场景(Scene)视图视图显示模式场景视图查看与导航第一章:编辑器进一步讲解文件菜单、编辑菜单、资源菜单、对象菜单
编辑菜单:Duplicate复制、FrameSelected聚焦、Play运行
资源菜单:导入导出包、SelectDependencles选择依赖项导入导出包演示、AssetSrore下载资源演示
网址:/
查询:“freemodel”
关键字3DFreeModularKitMiniFirstPersonController第一章:编辑器进一步讲解_项目(Project)视图创建各种资源导入新资源选择依赖项SelectDependencies查找特定资源第一章:编辑器进一步讲解_项目(Project)视图导入“MiniFirstPersonController”第一人称注意点:新输入系统InputSystem是2019年unity推出的新插件。unity默认是使用旧InputManager的。启动新输入系统设置方法:Edit-->ProjectSettings窗口中的Player选项第一章:编辑器进一步讲解绘制模式查看3D/2D模式转换编辑阶段特效显示开关编辑阶段,控制ICON显示第一章:编辑器进一步讲解_视图显示模式Perspective透视显示模式ISO正交显示模式第一章:编辑器进一步讲解_场景视图查看与导航聚焦定位移动视图缩放视图旋转视图
方式:Alt+鼠标左键飞行穿越模式
方式:鼠标右键+ADWS课程目录01123编辑器进一步讲解预制体Prefab世界局部左手坐标系45脚本基础知识案例开发第二章:预制体Prefab预制体是多个模型的综合体。预制体本质只是一种多模型内部关联描述文件使用预制体可以方便的管理大量模型,形成复杂综合体模型课程目录01123编辑器进一步讲解预制体Prefab世界局部左手坐标系45脚本基础知识案例开发第三章:世界、局部与左手坐标系现实世界的"世界坐标"与“局部坐标”
(指路方向有两种:“东南西北”与“前后左右”)两种坐标系的差异第三章:世界、局部与左手坐标系_两种坐标系的差异Cube模型旋转45度,分别使用世界坐标系、局部坐标系移动,
观察移动方向与“坐标陀螺”的差异。第三章:世界、局部与左手坐标系_两种坐标系的差异如何修改一个模型的“轴向点”(轴心点)?
场景中新建一个cube对象,以及空对象。
空对象移动到cube的边沿位置。cube作为空对象的子对象。
空对象改为Local以及Pivot参数
此时旋转空对象,cube就会以自己的一个边沿位置,
为轴心做旋转。
第三章:世界、局部与左手坐标系_脚本代码演示差异脚本使用世界坐标系,控制模型移动。脚本使用局部坐标系,控制模型移动。if(Input.GetKey(KeyCode.W)){//transform.Translate(Vector3.forward*2F,Space.World);transform.Translate(Vector3.forward*2F,Space.Self);}elseif(Input.GetKey(KeyCode.S)){//transform.Translate(Vector3.back*2F,Space.World);transform.Translate(Vector3.back*2F,Space.Self);}第三章:世界、局部与左手坐标系_什么是“左手坐标系”左手坐标系规则:把你的左手抬起攥拳,且伸出大拇指。你的大拇指指向的方向与脚本中Vector3的属性相同(即:up表示大拇指向上指向,down则是大拇指向下指向,以此类推…),则左手四指弯曲的指向就是游戏对象旋转的方向。if(Input.GetMouseButton(0)){//transform.Rotate(Vector3.up*2F,Space.World);transform.Rotate(Vector3.up*2F,Space.Self);}elseif(Input.GetMouseButton(1)){//transform.Rotate(Vector3.down*2F,Space.World);transform.Rotate(Vector3.down*2F,Space.Self);}第三章:世界、局部与左手坐标系_控制台使用Debug.Log()与print()在控制台输出结果。控制台窗口的常用参数课程目录01123编辑器进一步讲解预制体Prefab世界局部左手坐标系45脚本基础知识案例开发第四章:脚本基础知识4.1:键盘输入控制
键盘输入常用API:Input.GetKey(KeyCode.X);Input.GetKeyDown(...);Input.GetKeyUp(...);
第四章:脚本基础知识4.2:鼠标的输入控制
鼠标输入常用API:Input.GetMouseButton(0);Input.GetMouseButtonDown(0);Input.GetMouseButtonUp(0);
第四章:脚本基础知识4.3:脚本控制环绕旋转publicTransfromtarget;this.transfrom.RotateAround(target.position,Vector3.Up,10F)
课程目录01123编辑器进一步讲解预制体Prefab世界局部左手坐标系45脚本基础知识案例开发案例开发:地月系统与太阳的关系模拟开发太阳系中太阳、地球、月亮之间的环绕与自转关系。
谢谢观看Q/A课程结束(第三版)Unity虚拟现实与游戏从0到1第4章:地形编辑器课程目录01123安装TerrainToolbarTerrainToolbar参数导入地形资源包4创建基本地形5案例开发第一章:下载TerrainToolbarUnity先从创建基本的地形系统开始学习如何构建常见的高山、高原、洼地、河流等地形系统。在Unity2019以上版本,unity提供了TerrainToolbar的地形编辑器管理工具。它与Terrain编辑器组件的作用类似UnityHub与Unity编辑器的作用。第一章:下载TerrainToolbar下载与安装TerrainToolbar在packageManger中的(UnityRigister)查询:“TerrainToolbar”。如果查询不到,用名字查询:“com.unity.terrain-tools”下载成功后,可以在Window菜单下的Terrain菜单下有一个“TerrainToolbox”对于5.1.1以上版本,可以下载资源课程目录01123安装TerrainToolbarTerrainToolbar参数导入地形资源包4创建基本地形5案例开发第二章:TerrainToolbar参数设置TerrainToobar与Terrain组件,相当于是UnityHub与Unity编辑器的关系,前者可以创建与管理多个后者组件。TerrainToolbar的介绍点击Create可以创建一个Terrain。多次点击Creat按钮,会创建多个Terrain的实例。如果在下面的“RePlaceTerrains”进行勾选,则变为修改。第二章:TerrainToolbar参数设置关于对于地形的复制、分割、对地形高度的图形化展示(类似热成像)等。课程目录01123安装TerrainToolbarTerrainToolbar参数导入地形资源包4创建基本地形5案例开发第三章:导入地形资源包TerrainToobar中的导入高度图,可以通过导入高级的Terrain资源包实现。在AssetStrore中搜索“TerrainSampleAssetPack”(1.6G压缩资源)或者导入本课程配套资源包:
VisualDesignCafe.UnityPackage课程目录01123安装TerrainToolbarTerrainToolbar参数导入地形资源包4创建基本地形5案例开发第四章:创建基本地形绘制贴图纹理
使用地形的PaintTerrain中的下拉列表:“paintTexture"绘制贴图。使用AddLayer按钮,添加地形贴图。
第四章:创建基本地形地形的升高与降低配合Ctrl是洼地,配合Shift是平滑地形。 按住A按键/S按键/D按键,左右移动鼠标,分别表示是调整画笔强弱、画笔大小与旋转。使用键盘的逗号与句号,可以切换笔刷。
第四章:创建基本地形种植树木与花草导入第一人称观察虚拟世界第四章:创建基本地形更多功能细节,“PaintTerrain”绘制地形选项卡有很多功能:
PaintTexture:
绘制表面纹理
RaiseorLowerTerrain绘制高度贴图
SetHeight
设置整体高度。
SmoothHeight:平滑山体。第四章:创建基本地形更多功能细节
Sculpt:雕刻工具(*建桥、克隆、噪声、梯田)
Effects:效果(对照、锐化山峰、*斜坡平整)
Erosion:侵蚀
(*液压、热蚀、风蚀)
Transform:改变(捏Pinch[聚集中心点]、*弄脏Msudge[地形平坦]、拧Twist[地形螺旋效果])第四节:创建基本地形更多功能细节
MeshStampMesh:网格印章
PaintHoles:挖洞
StampTerrain:印章地形,标记画笔形状。课程目录01123安装TerrainToolbarTerrainToolbar参数导入地形资源包4创建基本地形5案例开发案例开发:“汽车物理仿真”室外场景综合运用本章节知识点,设计一个风景如画的优美风景区(山、水、大草原、汽车跑道等)更多模型(海水、大桥、建筑物等)可以直接查询AssetStroe下载免费资源即可。
案例开发:“汽车物理仿真”室外场景不能做网络查询资源的同学,可以下载配套资源包做开发。
谢谢观看Q/A课程结束(第三版)Unity虚拟现实与游戏从0到1第5章:光源系统课程目录01123光源类型光源常用参数典型光源场景制作第一节:光源类型直线光(Directionallight)、点光源(Point)、聚光灯(Spot)、区域光(AreaLight)第一节:光源类型-直线光直线光可以照射无限空间范围,一般常用作模拟虚拟世界的太阳光线第一节:光源类型-点光源“点光源”类似我们日常生活中的灯泡,光源可以向四面八方进行照射,它们是电脑游戏中最常用的灯光通常用于爆炸、灯泡等第一节:光源类型-聚光灯(Spot)聚光灯只在一个方向上,在一个圆锥体范围发射光线。它们一般常用在手电筒、汽车的车头灯、路灯等第一节:光源类型-区域光(AreaLight)区域光:区域光是一种特殊的光源类型,它默认是需要“烘焙”才能使用的光源类型。
特点是:分布均匀,消耗资源少。第一节:光源类型-区域光(AreaLight)区域光的运用步骤:A:主摄像机移除天空盒子,Light窗口移除天空盒子。B:隐藏直线光,添加区域光C:Cube设置为静态,Light窗口点击“GenerateLighting”课程目录01123光源类型光源常用参数典型光源场景制作第二章:光源常用参数光源有如下常用参数:Unity内置的四种光源类型:直线光(Directionallight)、点光源(Point)、聚光灯(Spot)、以及区域光(Area[仅用于烘焙]),其公共属性有:类型Type颜色Color范围Range强度Intensity阴影类型ShadowType课程目录01123光源类型光源常用参数典型光源场景制作第三节:典型光源场景制作-白天光源白天光源是最常用的一种类型第三节:典型光源场景制作-白天光源白天光源的制作步骤:导入一个做好的野外白天terrain模型。调节直线光的强度、颜色、角度等导入天空盒子包Sunny1Skybox导入使用MiniFirstPersonController插件,观察世界。第三节:典型光源场景制作-黑天光源夜晚光源场景第三节:典型光源场景制作-黑天光源黑天光源的制作步骤:改为夜晚天空盒子。降低直线光强度。Lighting窗口中增加雾效。增加点光源、聚光灯的运用。第三节:典型光源场景制作-封闭空间光源制作封闭空间一般就是室内场景。
一般封闭空间多用于封闭空间。第三节:典型光源场景制作-封闭空间光源制作案例:封闭空间案例制作选择一个封闭模型对模型中均匀使用点光源,类似居民楼家中电灯照亮方式。调节房间中光源的亮度与颜色等,使得房间中均匀光照效果。查看案例“汽车模拟仿真”中展示厅模型中
存在的各种光源类型与数量。
谢谢观看Q/A课程结束(第三版)Unity虚拟现实与游戏从0到1第6章:光照烘焙光照烘焙优秀的光影效果在虚拟现实、游戏开发中的地位是无容置疑,我们就需要加入多种光源提高画质。如果每次都实时的计算游戏对象的阴影、色彩、高光等图像效果,明显是不明智的。由于游戏场景中大多数游戏对象是相对固定不动的,所以我们可以采取某种手段使得这些不变对象的图像效果固化在场景中,这样就省去了大量计算提高了运行效率。光照烘焙技术就是用来解决这类问题。它的基本原理是通过对场景静态物体(游戏对象)的“烘焙”,通过计算产生一种叫“光照贴图”的图像光照烘焙光照烘焙光照烘焙的两大功能:A:显著增强画面感。B:进一步降低由于绚丽画面对于实时灯光的依赖,从而提高性能。课程目录01123实时全局光照光照烘焙反射探针456光照探头光照预览窗口案例开发第一章:实时全局光照实时全局光照(Real-timeGlobalIllumination,简称Real-timeGI)是Unity引擎中的一个特性,用于实现对场景中光源和物体之间互相影响的实时计算和呈现。这个计算包括了全局光照和间接光照等各种光照现象,使得画面更加真实和细致。课程目录01123实时全局光照光照烘焙反射探针456光照探头光照预览窗口案例开发第二章:光照烘焙烘焙步骤:A:场景搭建,导入场景模型,定义静态对象,场景中所有对象定义为“Static”。B:导入模型如果有光线信息,可以先禁用或者删除。第二章:光照烘焙烘焙步骤:C:定义烘焙光线。展示厅中的烘焙光与直线光定义为“Baked”属性。D:烘焙处理烘焙结束后,产生与当前场景名称同名的烘焙目录,内部主要包含了烘焙贴图。(10个)第二章:光照烘焙烘焙步骤:
E:可以通过导入第一人称,查看展示厅模型环境。课程目录01123实时全局光照光照烘焙反射探针456光照探头光照预览窗口案例开发-Part03-反射探针Pleaseenteratitle第三章:反射探针加入反射探针调整反射探针的参数与
影响范围。第三章:反射探针反射探针加入后的效果展示课程目录01123实时全局光照光照烘焙反射探针456光照探头光照预览窗口案例开发第四章:光照探头加入光照探头课程目录01123实时全局光照光照烘焙反射探针456光照探头光照预览窗口案例开发第五章:光照预览窗口使用光照预览窗口第五章:光照预览窗口最后最终效果:课程目录01123实时全局光照光照烘焙反射探针456光照探头光照预览窗口案例开发案例开发自定义野外地形(或导入优秀插件)+汽车展示厅+汽车模型,搭建“汽车模拟仿真的场景”。谢谢观看Q/A课程结束(第三版)Unity虚拟现实与游戏从0到1第7章:音频系统课程目录01123音频剪辑属性音频监听组件音频混响与滤波45混音器AudioMixer案例开发第一章:音频剪辑属性游戏音频的播放在游戏中占据非常重要的地位,音频可以分为两大类一种为背景音乐,一类为音效。前者适合于较长的音频处理例如游戏背景音乐,第二种则适合于较短的游戏音乐如枪击声、走路声等一瞬间即可播放完毕的音效。第一章:音频剪辑属性Unity目前支持的音频剪辑(AudioClip)主要包含如下音频格式。
Mp3:适合较长音频,作为背景音乐。Ogg:适合较长音频,作为背景音乐。Wav:适合较短音频,作为环境音效。Aiff:适合较短音频,作为环境音效。AAC(AdvancedAudioCoding)FLAC(FreeLosslessAudioCodec)第一章:音频剪辑属性音频剪辑是指我们导入Unity项目视图中的音频资源文件(例如*.WAV文件)。本节讨论音频剪辑文件的属性如下:
ForceToMono(强制单声道放音):当启用此选项时,多声道音频将在打包之前混合到单声道,此选项适合在移动设备上开启。第一章:音频剪辑属性音频剪辑是指我们导入Unity项目视图中的音频资源文件(例如*.WAV文件)。本节讨论音频剪辑文件的属性如下:
LoadInBackground(后台加载):当启用此选项时,音频的加载将在一个单独的线程上以延迟的方式加载,而不会阻塞主线程。此选项适合较大尺寸背景音乐的加载。
第一章:音频剪辑属性剪辑文件的属性(续):Ambisonic:(高保真度立体声响):作为高保真立体音响保存。LoadType(音频加载方式):第一种方式:DecompressOnLoad默认选项,加载时解压缩。使用此选项可用于较小的压缩声音,以避免即时解压缩的性能开销,所以不要使用此选项用于大文件。第一章:音频剪辑属性剪辑文件的属性(续):LoadType(音频加载方式):
第二种方式:CompressedInMemory在内存中压缩处理。使声音在内存中压缩并在播放时解压缩,此选项有轻微的性能开销。第三种方式:Streaming快速解码音频,此方法使用最少的内存来缓存从磁盘上增量读取并压缩的数据。第一章:音频剪辑属性剪辑文件的属性(续):
PreloadAudioData预先加载音频数据。CompressionFormat压缩格式
PCM:这个选项提供更高的质量,以牺牲较大的文件大小,最好是非常短的声音效果。
Vorbis:文件更小但稍低的音频质量,这种格式最好适用于中等长度的音效和音乐。
ADPCM:适合需要大量演奏的声音,如背景音乐、脚步声等。第一章:音频剪辑属性剪辑文件的属性(续):SampleRateSetting采样率设置
PreserveSampleRate:保持采样率未修改(默认值)
OptimizeSampleRate:该设置根据采样的最高频率自动优化采样率。
OverrideSampleRate:允许手动设置采样率。课程目录01123音频剪辑属性音频监听组件音频混响与滤波45混音器AudioMixer案例开发第二章:音频监听组件音频监听(AudioListener)组件与音频播放(AudioSource)组件是播放音频的必要条件。一般情况下音频监听组件为主摄像机(MainCamera)的默认组件。音频监听组件本身没有属性,它相当于人的一对耳朵。第二章:音频监听与音频源组件音频源组件的属性:AudioClip:音频剪辑这是最重要的属性,开发者必须进行手工或者脚本方式进行赋值。第二章:音频监听与音频源组件音频源组件的属性:Output:输出音频剪辑通过音频混响器输出。
Mute:静音BypassEffect忽略效果应用到音频源的快速“直通”过滤效果,用来快速打开或者关闭所有特效第二节:音频监听与音频源组件音频源组件的属性:BypassListenerEffect忽略监听器效果用来快速打开或者关闭监听器特效。BypassReverbZone忽略混响器用来快速打开或者关闭混响器。第二节:音频监听与音频源组件音频源组件的属性:PlayonAwake:自动播放。大型的游戏开发目中一般都会去掉这个勾选,而使用脚本的方式在程序中进行控制播放。Loop
:是否循环播放。在3D/2D游戏开发背景音乐的时候,这个选项会进行勾选。第二节:音频监听与音频源组件音频源组件的属性:Priority:确定优先级确定场景中所有音频源之间的优先级。(0:最重要256:最不重要),当资源不足时优先级最低的会被剔除。Volume:音量调节具体这个音频源的音量,这个选项在场景中存在多个音频源的时候常用。第二章:音频监听与音频源组件音频源组件的属性:Pitch:音调改变音调数值,可以加速或者减速播放音频剪辑,默认为1是正常播放速度。SpatialBlend:
空间混合
默认是2D场景,必须改为3D模式,否则后面的3DSoundSettings无效。StereoPan立体声道
最小值为-1,表示采用左声道播放。最大数值为1,采用由声道播放。
第二章:音频监听与音频源组件音频源组件的属性:VolumeRollof:音频衰减设置音量的衰减模式(对数LogarithmicRolloff、线性LinearRolloff、自定义CustomRolloff)第二章:音频监听与音频源组件音频源组件的属性:MinDistance:最小距离在3DSoundSettingMinDistance属性是表示音频源与音频监听组件在指定的最小距离数值之内,声音会一直保持最响。MaxDistance:最大距离。在3DSoundSettingMaxDistance属性是表示音频源与音频监听组件在指定的最大距离数值之外,声音会听不到。课程目录01123音频剪辑属性音频监听组件音频混响与滤波45混音器AudioMixer案例开发第三章:音频混响与滤波
音频混响器(AudioReverbZones)组件音频混响器组件目的就是提供给我们游戏项目中不同环境中逼真的音效模拟系统。例如:当赛车在普通赛道与高速经过隧道的时候,打雷在城市上空与山谷中的区别。制作方法:只需要在音频源(AudioSource)组件所在的游戏对象上添加“AudioReverbZones”组件第三章:音频混响器与滤波器组件
音频混响器(AudioReverbZones)组件
设置与实验区分音频在城市与山谷中不同的音响效果。
第三章:音频混响器与滤波器组件音频滤波器组件(说明:这是包含若干的组件库)1:低通滤波器(AudioLowPassFilter)用于抑制高频信号,通过低频。
例如:雷声近处尖锐,远处低沉。还有隔门听声
的效果。第三章:音频混响器与滤波器组件
音频滤波器组件(续)2:高通滤波器(AudioHighPassFilter)用于抑制低频,通过高频。例如制作非常刺耳的声音。第三章:音频混响器与滤波器组件
音频滤波器组件(续)3:回声滤波器(AudioEchoFilter)给音频添加延迟效果(回声效果)第三章:音频混响器与滤波器组件
音频滤波器组件(续)4:失真滤波器(AudioDistortionFilter)对音频的失真处理,例如模拟低质量的收音机。5:混响滤波器(AudioReverbFilter)对音频进行失真处理来产生混响效果。6:合声滤波器(AudioChorusFilter)合成由多个音频相同但略有不同的声音。例如生活中的大合唱效果。
课程目录01123音频剪辑属性音频监听组件音频混响与滤波45混音器AudioMixer案例开发第四章:音频混音器“混音器”(AudioMixer)的技术,用于实现高度复杂的实时重定路线和丰富的音频场景效果。主要目的就是对音频信号进行数字信号加工处理的操作,以此达到所需复杂音频效果的开发。第四章:音频混音器步骤1:创建AudioMixer组件项目视图中通过鼠标右键点击“AudioMixer”创建,另外一种是通过Window菜单的方式。第四章:音频混音器步骤2:AudioMixer窗口编辑音轨双击项目视图中新建立的“NewAudioMixer.mixer”文件,进入AudioMixer编辑窗口第四章:音频混音器步骤3:AudioMixer与AudioSoures属性的关联
对于刚打开的AudioMixer还不能发挥功能,需要先与AudioSources组件做关联第四章:音频混音器步骤4:增加“伴奏”音轨如果音频混音器只有一个音轨,则音频混音器就没有存在的意义。所以笔者开始增加伴奏的音轨,点击AudioMixer左边Groups节点,鼠标右击“Addchildgroup”增加辅助音轨。第四章:音频混音器步骤5:编辑音轨之间的协作关系。增加辅助音轨“Accompany1”后,需要与一个AudioSource关联(必须是一个新的AudioSource)第四章:音频混音器在运行状态下,AudioMixer窗口上部的“EditinPlayMode”按钮(即:红色按钮)。此时我们会发现两个音轨的调节箭头发亮显示,表示可以接受输入信息。分别使用鼠标拖拽两个音频轨的上下调节箭头,可以感受到不同音频之间的变化。课程目录01123音频剪辑属性音频监听组件音频混响与滤波45混音器AudioMixer案例开发第五章:案例_构建野外场景音频系统建立湖面野外场景,搭建野外音频系统
1:导入配套资源(或者AssetStore下载)或者自己制作野外湖面或者海岛场景。
2:更改夜晚类型天空盒子,且降低夜晚实时光线。第五章:案例_构建野外场景音频系统建立湖面野外场景,搭建野外音频系统3:导入“MiniFirstPersonController”第一人称,在虚拟世界测试音频系统。
注意:unity2023默认管线是默认支持Old的输入系统的,所以要更改设置:ProjectSettign-->Player-->ActiveInputHandling默认是Old,改为Both后,unity编辑器会自动重启。第五章:案例_构建野外场景音频系统建立湖面野外场景,搭建野外音频系统4:导入各种音频资源,模拟大自然天然的野外自然音频音响效果。
谢谢观看Q/A课程结束(第三版)Unity虚拟现实与游戏从0到1第8章:Unity脚本程序设计课程目录01123456重要脚本函数脚本生命周期伪多线程规则脚本执行顺序Unity重要应用类输入管理器第一章:脚本的注意事项1:脚本必须依附于游戏对象才能运行。2:初始化信息不能写到脚本构造函数中,而是应该定义在Unity规定的事件函数(Start、Awake)3:脚本可以在属性窗口(Inspector)中修改属性第一章:脚本的注意事项4:脚本只能依附于游戏对象或者由其他脚本调用才会运行。5:一个脚本可以赋值给多个游戏对象,即代表脚本的多个实例。第一章:脚本的注意事项项目工程分层设计项目视图中所有的资源都进行“分层”处理。
资源Resources
Texture、Materials、Audios、Shader
脚本Script
场景Scenes
第一章:脚本的注意事项项目工程分层设计(续)插件Plugins
编辑区Editor
只读非压缩文件夹StreamingAssets
第一章:脚本的注意事项如何更改脚本模版
安装路径:
X:\xxx\2023.1.0a21\Editor\
Data\Resources\ScriptTemplates第一章:Unity重要脚本函数Untiy重要核心类-GameObject
类GameObejct是所有Unity场景中的基类,但不是最终根类它继承Object类
实例方法:AddComponent<T> 增加制定类型的组件方法
GetComponent<T>
获得指定类型的组件方法
静态方法:CreatePrimitive() 创建原始类型游戏对象
Find()
查找对象
FindGameObjectsWithTag()游戏对象标签查找(返回多个游戏对象)
SetActive()
设置激活状态
第一章:Unity重要脚本函数Untiy重要核心类-GameObject
类继承的静态方法:
Destroy()销毁游戏对象
Instantiate()
克隆游戏对象
DontDestroyOnLoad()加载新场景的时候使目标物体不被自动销毁。
第一章:Unity重要脚本函数Untiy重要核心类-GameObject
类
创建对象:GameObject.CreatePrimitive(PrimitiveType.Cube);
演示:创建、克隆、销毁对象。
第一章:Unity重要脚本函数Untiy重要核心类-GameObject
类(续)
GameObject类更多属性与方法layer属性、tag属性第一章:Unity重要脚本函数Untiy重要核心类-MonoBehaviour类(详细在17章节专门讲解)实例方法:Invoke() 调用函数
InvokeRepeating()重复调用函数
CancelInvoke() 取消所有调用。
IsInvoking() 指定的方法是否在等候调用
StartCoroutine()
开始协程
StopCoroutine() 停止协程
StopAllCoroutines()停止所有的协程第一章:Unity重要脚本函数Untiy重要核心类-MonoBehaviour类静态方法:Unity事件函数(回调方法)[第三节详细讲解]:Reset()、Awake()、OnEnable()、Start()、FixedUpdate()、Update()、LateUpdate()、OnGUI()、OnDisable()、OnDestroy()Print()OnMouseEnter()当鼠标进入到Collider(碰撞体)中时调用
OnMouseOver()OnMouseExit()OnMouseDown()OnMouseUp()OnMouseDrag()第一章:Unity重要脚本函数Untiy重要核心类-MonoBehaviour类静态方法:
[“应用篇”碰撞体与触发器章节专门讲解]
OnTriggerEnter()OnTriggerStay()OnTriggerExit()OnCollisionEnter()OnCollisionStay()OnCollisionExit()OnBecameVisible()在任何相机上可见时调用OnBecameInvisible()在任何相机上都不可见时调用第一章:Unity重要脚本函数Untiy重要核心类-Transform类实例方法:Rotate() 旋转游戏对象
RotateAround()环绕旋转游戏对象
Translate() 使得游戏对象位移
LookAt()
旋转物体,这样向前向量指向target的当前位置。第一章:Unity重要脚本函数Untiy重要核心类-Transform类
动态调整游戏对象的位置、旋转、缩放position位置属性eulerAngles欧拉角度属性localScale尺寸属性第一章:Unity重要脚本函数Untiy重要核心类-Transform类继承的方法。(“应用篇”数据传值讲解)
SendMessage()
数据传值技术中的常用技术
BroadcastMessage() 向下广播
SendMessageUpwards()向上广播第一章:Unity重要脚本函数Untiy重要核心类-Time类
Time.DeltaTime
属性:表示“帧”的间隔时间"Update"事件函数特点:
单位时间内运行的次数是不确定的,与计算机的性能和具体分配的资源有很大关系。第一章:Unity重要脚本函数Untiy重要核心类-Time类timeScale传递时间的缩放,这可用于减慢运动效果。游戏中常用于“暂停游戏”的场合处理。
realtimeSinceStartup以秒计,自游戏开始的实时时间(只读,不被timeScale所影响)。课程目录01123456重要脚本函数脚本生命周期伪多线程规则脚本执行顺序Unity重要应用类输入管理器第二章:Unity脚本生命周期Unity核心十大事件函数:
按照执行的先后次序依次为以下内容:
1.Reset:重置函数,编辑期当脚本赋值给游戏对象时触发,仅执行一次。2.Awake:
唤醒函数,最先执行的事件函数,用于优先级最高的事件处理,仅执行一次。3.OnEnable:启用函数,当脚本启用的时候触发。随着脚本的不断启用与禁用可以执行多次。4.Start:开始函数,一般用于给脚本字段附初始值使用,仅执行一次。5.FixedUpdate:固定更新函数,以默认0.02秒的时钟频率执行,常用于物理学模拟中处理刚体的移动等,每秒执行多次。第二章:Unity脚本生命周期Unity核心十大事件函数:
按照执行的先后次序依次为以下内容:6.Update
更新函数,执行的频率不固定。与计算机当前性能消耗成反比,常用于逻辑计算,每秒执行多次。7.LateUpdate
后更新函数,在其余两个更新函数之后运行,常用于摄像机的控制情形中,每秒执行多次。8.OnGUI
图形绘制函数,绘制系统UI界面,每秒执行多次。9.OnDisable
脚本禁用函数,当脚本禁用的时候触发。随着脚本的不断启用与禁用可以执行多次。10.OnDestroy
销毁函数,本脚本所属游戏对象销毁的时刻执行本脚本,仅执行一次。第二章:Unity脚本生命周期Unity事件函数调用顺序实验:Reset()、Awake()OnDestroy()等十个“事件函数”都定义在一个Unity脚本中,观察脚本的执行顺序?以及脚本被禁用与启用之间的规则?第二章:Unity脚本生命周期Unity事件函数禁用与启用规律课程目录01123456重要脚本函数脚本生命周期伪多线程规则脚本执行顺序Unity重要应用类输入管理器第三章:Unity的伪多线程规则实验:定义三个脚本,每个脚本都有十大事件函数,测试三个脚本
执行顺序的规律。第三章:Unity的伪多线程规则实验结果规则总结:
规则1:脚本总是从Reset()、Awake()、OnEnable()开始,一直到OnDestory()最后结束。
规则2:脚本赋值给游戏对象的顺序也是影响最终输出结果的,即先赋值给游戏对象的脚本后执行,后赋值给游戏对象的脚本先执行(注:这属于数据结构中“栈”的特性)。课程目录01123456重要脚本函数脚本生命周期伪多线程规则脚本执行顺序Unity重要应用类输入管理器第四章:脚本执行顺序对于前面的实验我们了解到,Unity脚本的执行顺序与脚本赋值的顺序相关。但是我们在实际开发项目时,往往需要按照自己的设计来改变脚本之间的执行顺序问题。解决方法有多种,最简单的方式是使用Unity提供的“ScriptExecutionOrder”窗口来进行设置。第四章:脚本执行顺序修改步骤:
可以通过点击右下角的“+”号,来给每一个脚本重新确定执行顺序。但必须需要注意的是:顺序编号必须以“-”(负数符号)开始,负数数值越小优先级越高,最后需要点击“Apply”确认。课程目录01123456重要脚本函数脚本生命周期伪多线程规则脚本执行顺序Unity重要应用类输入管理器第五章:Unity重要应用类Unity除了四大核心类,还有很多的重要应用类:Application应用类
Application.unityVersion、Application.platformDebug调试类Debug.Log()与Print()第五章:Unity重要应用类Unity除了四大核心类,还有很多的重要应用类:Input输入类Mathf数学类
Input.GetKey(KeyCode.X);Input.GetButtonDown("");
Input.GetMourse(0);
Input.GetAxis(“Horizontal”)得到按键的水平数值(-1~1)第五章:Unity重要应用类Unity除了四大核心类,还有很多的重要应用类:Vector3三维向量类Random随机数第五章:Unity重要应用类Unity除了四大核心类,还有很多的重要应用类:
场景切换usingUnityEngine.SceneManagement;
SceneManager.LoadScene("ScenesX");
课程目录01123456重要脚本函数脚本生命周期伪多线程规则脚本执行顺序Unity重要应用类输入管理器第六章:Unity输入管理器输入管理器是一个对Input
API脚本的配置窗口。谢谢观看Q/A课程结束(第三版)Unity虚拟现实与游戏从0到1第9章:UI界面开发课程目录011234基础控件锚点与屏幕自适应高级控件案例开发-Part01-基础控件Pleaseenteratitle第一章:基础控件
UGUI全称:UnityGUI,是Unity公司Unity4.6以上版本新加入的功能非常强大与完善的UI界面显示系统。第一章:基础控件-Canvas画布Canvas组件三种渲染模式ScreenSpace–overlay此模式不需要UI摄像机,UI将永远出现在所有摄像机的最前面。ScreenSpace-Camera此模式需要提供一个UICamera,它支持UI前方显示3D模型与粒子系统等内容。WorldSpace这个就是完全3D的UI系统。第一章:基础控件-Canvas画布CanvasScaler–UIScaleMode:ConstantPixelSize固定像素尺寸ScaleWithScreenSize以宽度为标准
缩放(屏幕自适应特性)
ScreenMatchMode:屏幕匹配模式
1>MatchWidthOrHeight匹配宽度或高度
2>Expand扩展
3>shrink收缩ConstantPhysicalSize:第一章:基础控件-Panel控件Panel为“面板”控件,主要的功能就是一个“容器”。通过Panel控件,我们可以更加合理与方便的整体移动与处理一组控件。一个功能完备的UI界面,往往会使用多个Panel容器控件。第一章:基础控件-EventSystemEventSystem是在创建Canvas控件的同时,系统自动添加的组件系统。
EventSystem事件系统组件。
StandaloneInputModule独立输入模块第一章:基础控件–Text控件Font:字体FontStyle:字体样式FontSize:字体大小LineSpacing:行间距(多行)PichText:富文本
例如:
U<b>G</b><i>U</i>I<color="yellow">学习</color>
Color:字体颜色第一章:基础控件–Text控件(2)Font:字体FontStyle:字体样式FontSize:字体大小LineSpacing:行间距(多行)PichText:富文本
例如:
U<b>G</b><i>U</i>I<color="yellow">学习</color>
Color:字体颜色第一章:基础控件–“Text_TextMeshPro(TMP)”控件Unity2019之后UGUI采用了TextmeshPro字体插件,但是默认不支持中文。导入“ImportTMPEssentials”TMP的资源包。第一章:基础控件“Text_TextMeshPro(TMP)”(续)解决中文支持问题:1:从C:\Windows\Fonts拷贝常用字体到unity中2:拷贝字库文件(Zh-cn_Commonly_used.txt)到unity中,注意检查此文本是UTF-8格式。3:Windows-->TextMeshPro-->FontAssetCreator窗口
第一章:基础控件“Text_TextMeshPro(TMP)”(续)4:参数设置:
SourceFontFile选择simhei(黑体)
AtlasResolution:8192,8192CharactersSet:Charactersfromfile
Charactersfile:zh-cn_Commonly_used
RenderMode:SMOOTH第一章:基础控件“Text_TextMeshPro(TMP)”(续)点击“GenerateFontAtlas”按钮,生成*.asset字体资源文件。第一章:基础控件“Text_TextMeshPro(TMP)”(续)以上设置完成,就可以应用Text(Tmp)字体了。第一章:基础控件-Image组件应用在UI的贴图要求:首先对于图片的格式,首先属性栏中选择“Sprit(2DandUI)”格式。等比例调节图片的大小,需要按住Shift进行调节。第一章:基础控件-Image组件(续)Image组件属性SourceImage:贴图来源Color:贴图颜色PreserveAspect:图像的高度和宽度应保持原始比例的还是重新调整SetNativeSize:设置贴图原始大小第一章:基础控件-Image组件(续)Image组件ImageType属性:Simple:简单Sliced:片提示:贴图进行“九宫格”处理后才可以应用。图像的中心缩放以适合的控制矩形,但边界保持大小不变,不管图片缩放大小多少。这种特性允许您显示图像的轮廓在不同尺度而不用担心扩大与图像的轮廓。如果你只想要与没有中心的边界,您可以禁用的FillCenter属性。
第一章:基础控件-Image组件(续)Tiled:平铺
图像保持在其原始大小,重复多次填补空白。Filled:填充
图像填充满整个Image矩形区域。第一章:基础控件-ButtonInteractable:是否启用(具备交互性)Transition:过渡方式
1>ColorTint颜色色彩默认状态,最常用。
2>None:无第一章:基础控件–Button(续)Interactable:是否启用(具备交互性)Transition:过渡方式3>SpriteSwap:精灵交换需要使用相同功能不同状态的贴图。第一章:基础控件–Button(续)Interactable:是否启用(具备交互性)Transition:过渡方式
4>Animation:动画最复杂,效果最绚丽。第一章:基础控件–Button(续)在Button组件的下方有一个OnClick()选项,这就是Button控件处理事件的重要机制。课程目录011234基础控件锚点与屏幕自适应高级控件案例开发第二章:锚点与屏幕自适应每个控件都有一个Anchor的属性,其作用是当改变屏幕分辨率的时候,当前控件做如何的位置变换。即控件的屏幕自适应特性。使用Button为例观察RectTransform中PosXPosY参数的变化,掌握锚点与中心点关系与区别。第二章:锚点与屏幕自适应控件“中心点”与“锚点”的不同。控件的锚点总是相对于自己的上一级来定义的。(例如Button中Text中的锚点是不能离开控件本身范围的)鼠标移动到控件的四个边沿,出现小的旋钮,可以旋转控件。控件的4个边沿与Anchor(锚点)的距离是保持不变的。即不受屏幕分辨率变化的影响。课程目录011234基础控件锚点与屏幕自适应高级控件案例开发第三章:高级控件–Toggle控件IsOn:
对复选框确定目前是处于开还是关OnValueChanged:选择切换后的事件。在右下角是一个‘+’,添加一个委托。第三章:高级控件–Toggle控件(续)Group:
定义组方法(即:单选框功能):
1>定义一个"ToggleGroup"空对象,添加ToggleGroup脚本组件。
2>选择所有需要定义一组的Toggle控件,然后对应的Group属性填入"ToggleGroup"即可。
3>为了控件显示的清晰性,建议把所有的Toggle控件列为“ToggleGroup”组件的子对象。第三章:高级控件–Slider控件FillRect:填充矩形区域
HandleRect:手柄矩形区域
Direction:手柄方向
MinValue:最小数值
MaxValue:最大数值第三章:高级控件–Slider控件(续)
WholeNumbers:整数数值
选中了整个Numbers数字选项然后滑块将只上移或
下移时的值是一个整数
Value:数值事件:OnValueChanged(Single)第三章:高级控件-ScrollbarHandleRect:手柄矩形
Direction:方向
Value:数值
Size:(手柄)尺寸大小
NumberofSteps:步骤事件:OnValueChanged(Single)第三章:高级控件-滑动区域ScrollRect滑动区域控件ScrollRect功能:在一个较小的区域显示较多的内部控件的时候使用的一种机制。组织结构ScrollRect(ScrollRect/Image/Mask)Content(注:范围一定大于本控件本身)ScrollView(具体显示内容:如Image)ScrollViewScrollViewScrollBar第三章:高级控件-滑动区域ScrollRect(续)步骤1:按照一定的规则结构,搭建界面基本UI显示。步骤2:Scrollbar控件赋值给ScrollRect组件的HorizontalScrollbar属性。Content空对象赋值给ScrollRect组件的Content属性。至此程序可以进行测试运行,得到一个粗糙的UI界面运行结果。步骤3:给ScrollRect添加Images与Mask组件,程序运行得到实现基本功能要求的综合控件。步骤4:对显示内容进行完善与美化,且测试运行。第三章:高级控件-标签页面标签页面控件作用也是让UI设计者能够在有限的空间中,放入更多的展示内容。结构如下:ToggleGroup(添加ToggleGroup组件)
Toggle1Toggle2DisplayContent(Image)PageOneTextPageTwoText第三章:高级控件-标签页面(续)事件处理给Toggle做单选处理。给Toggle添加OnValueChanged()函数定义课程目录011234基础控件锚点与屏幕自适应高级控件案例开发第四章:案例_汽车仿真项目UI部分开发项目主窗体项目主窗体-音频设置菜单第四章:案例_汽车仿真项目UI部分开发项目展示厅UI-功能菜单项目展示厅UI-颜色菜单谢谢观看Q/A课程结束(第三版)Unity虚拟现实与游戏从0到1第10章:
3D模型与动画制作课程目录011234静态模型的导出模型贴图问题导出注意事项自定义包导入导出-Part01-静态模型的导出Pleaseenteratitle第一章:静态模型的导出
3D游戏场景中的三维模型大部分是由第三方建模软件制作的。
例如:3DMax、Maya、Cinema4D、Modo等。三维模型建议采用FBX格式导出模型,该格式可以更方便的对需要导出的信息进行筛选和设置,而且能够包含模型数据、贴图数据、动画数据等3D游戏中经常使用到的数据。
第一章:静态模型的导出-3DMax基本使用
3DMax(2012)工具的最基本使用。了解3DMax中的四个视图(透视图、前视图、顶视图、左视图)了解基本模型的使用方法。(备注:3Dmax2012安装启动后,如果发现界面的透视中有时会出现一片红色,而且添加图形上去图形不停抖动。解决方法如下:点“视图”菜单,再点“视口配置”,之后点“显示性能”然后取消“逐步提高质量”的勾选)
第一章:静态模型的导出-3DMax的编辑界面
第一章:静态模型的导出-3DMax的编辑界面
第一章:静态模型的导出-基本使用给模型添加材质。(工具栏中的“材质编辑器”M为快捷键)点击菜单“渲染”--》“渲染”,进行查看。如果给模型添加贴图。(材质编辑器-->贴图-->材质/贴图浏览器-->位图-->选择贴图)
第一章:静态模型的导出-基本使用
第一章:静态模型的导出-基本使用
第一章:静态模型的导出-基本使用
第一章:静态模型的导出【课堂作业】
按照以上步骤,熟悉3DMax的基本编辑与使用。
第一章:静态模型的导出-单位的设置在Unity3D中,一个系统单位表示为1米,为了能够与最终的游戏场景尺寸匹配,需要在3dsMax中设置它的系统单位。打开3dsMax,在主菜单中选择“自定义”
“单位设置”
第一章:静态模型的导出在“显示单位比例””公制”中选择“米”选项。
点击“系统单位设置”,把后面的单位设置成“米”选择“确定”按钮退出。
第一章:静态模型的导出导出设置:
“文件”“导出”选择导出FBX格式
选择导出的目录以及文件名称。导出设置面板:
第一章:静态模型的导出
FBX模型文件导入到Unity3D中,
且在Inspector窗口中对
“缩放因子”进行设置,
然后点击”Apply”按钮。
第一章:静态模型的导出
FBXImport面板中Model标签栏中的属性说明。1>ScaleFactor:缩放因子。Unity3D默认空间单位中的一米等于导入的文件中的一个单位。如果第三方软件中使用不同大小的单位建模,在这里可以进行校正。Read/WriteEnabled:使模型可以被实时读写,这样可以在场景中修改模型数据,但它是在内存中复制一个副本作为代价的,所以会占用多一倍的内存空间。建议游戏产品在发布前去掉默认的选项。GenerateCollider:如果勾选,模型在导入时自动加上MeshColliders组件。建议不要对复杂的移动物体使用这个选项。如果感觉导入的对象尺寸有问题,可以创建一个基本的Cube,该立方体的尺寸是1米*1米*1米。
第一章:静态模型的导出【课堂作业】
开发一个金属球与木纹理地板的模型,且导入Unity中使用。按照以上步骤,对3DMax中制作的模型进行贴图,然后设置好单位尺寸后,导出到Unity3D中显示出来,注意大小。需要注意图片本身与路径都要为英文。制作的模型在输出FBX前需要进行渲染一下。备注:以上按照顺序倒入的3D模型大小与设想的是否一样?
注意点如下:1>需要先调整好3DMax的单位尺寸再开发模型。2>模型尺寸需要使用“修改器”确定实际大小。
(以上练习目的是游戏公司快速搭建游戏原型的常用方法)课程目录011234静态模型的导出模型贴图问题导出注意事项自定义包导入导出第二章:静态模型容易失去贴图问题解决这个问题主要是在3DMax中导出模型之前,先把贴图文件拷贝到Unity3D工程下,否则导出的模型在Unity3D中不会自动添加贴图,当一个模型的贴图量比较多时,可能会造成很多的麻烦。
【课堂作业】
你在以上的课堂作业中是否遇到此问题,请解决。
课程目录011234静态模型的导出模型贴图问题导出注意事项自定义包导入导出第三章:3D模型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铜仁2025年贵州铜仁市中医医院引进卫生专业技术人才笔试历年参考题库附带答案详解
- 邯郸河北邯郸馆陶县司法局招录司法协理员8人笔试历年参考题库附带答案详解
- 萍乡2025年江西萍乡市人民医院专业技术岗招聘16人笔试历年参考题库附带答案详解
- 滁州2025年安徽滁州天长市司法局招聘司法协理员30人笔试历年参考题库附带答案详解
- 海口2025年海南海口市旅游和文化广电体育局招聘2人笔试历年参考题库附带答案详解
- 河南2025年河南大学招聘10人笔试历年参考题库附带答案详解
- 杭州浙江杭州市标准化研究院招聘编外聘用人员笔试历年参考题库附带答案详解
- 扬州2025年江苏扬州市广陵区卫生健康系统事业单位招聘专业技术人员38人笔试历年参考题库附带答案详解
- 宿迁2025年江苏宿迁泗阳县部分县直机关事业单位转任(选调)46人笔试历年参考题库附带答案详解
- 天津2025年天津医科大学朱宪彝纪念医院人事代理制招聘笔试历年参考题库附带答案详解
- (二诊)绵阳市2023级高三第二次诊断考试地理试卷A卷+B卷(含答案)
- 金融行业客户身份识别管理办法
- 2026年及未来5年中国半导体热电系统行业市场全景监测及投资战略咨询报告
- 2026福建厦门市高崎出入境边防检查站招聘警务辅助人员30人考试参考试题及答案解析
- 厨师消防安全责任书
- 抖音续火花合同里协议
- 河南豫能控股股份有限公司及所管企业2026届校园招聘127人笔试备考试题及答案解析
- 中医诊疗技术操作指南
- 2026年医院太平间服务外包合同
- 小学六年级英语2026年上学期语法填空综合题集
- 海洋电子信息产业现状与发展路径研究
评论
0/150
提交评论