第3讲 Unity引擎入门篇_2_第1页
第3讲 Unity引擎入门篇_2_第2页
第3讲 Unity引擎入门篇_2_第3页
第3讲 Unity引擎入门篇_2_第4页
第3讲 Unity引擎入门篇_2_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、LOGO2022-4-11第三讲:第三讲:Unity引擎入门篇引擎入门篇 2游戏开发技术游戏开发技术2022-4-12二、二、脚本语言简介脚本语言简介三、脚本开发基础三、脚本开发基础本讲提纲本讲提纲一、一、创建基本游戏场景创建基本游戏场景四、讨论四、讨论2022-4-13一、创建基本游戏场景一、创建基本游戏场景2022-4-141.1 摄像机摄像机 游戏场景中至少有一台摄像机,也可游戏场景中至少有一台摄像机,也可以有多台摄像机。以有多台摄像机。 多台摄像机可以创建双人分屏效果或高级多台摄像机可以创建双人分屏效果或高级的自定义效果。的自定义效果。 Unity中支持两种类型的摄像机中支持两种类型的

2、摄像机(Projection): Perspective 透视摄像机透视摄像机 Orthographic 正交摄像机正交摄像机2022-4-15摄像机类型摄像机类型 Perspective透视摄像机透视摄像机 四棱台:近大远小四棱台:近大远小 适合适合3D游戏游戏2022-4-16摄像机类型摄像机类型 Orthographic正交摄像机正交摄像机 长方体:大小一样长方体:大小一样 适合适合2D游戏游戏2022-4-17摄像机设置摄像机设置 剔除掩码剔除掩码 culling mask Layers设置设置2022-4-18摄像机设置摄像机设置 画中画画中画2022-4-19摄像机设置摄像机设置

3、多相机切换多相机切换 按数字键按数字键1,2,3即可进行摄像机的即可进行摄像机的切换。切换。 通过通过【脚本控制脚本控制】2022-4-1101.2 光源光源 Unity提供了提供了4种类型的光源,在合理种类型的光源,在合理设置的基础上可以模拟自然界中任何设置的基础上可以模拟自然界中任何的光源。的光源。 1、Directional light:方向光源:方向光源 该类型光源可以被放置在无穷远出,可以影该类型光源可以被放置在无穷远出,可以影响场景的一切游戏对象响场景的一切游戏对象; 类似于自然界中的日光的照明效果。类似于自然界中的日光的照明效果。 方向光源是最不耗费图形处理器资源的光源方向光源是

4、最不耗费图形处理器资源的光源类型。类型。2022-4-1111.2 光源光源 2、Point light:点光源:点光源 点光源可从一个位置向四面八方发出光线,点光源可从一个位置向四面八方发出光线,影响其范围内的所有对象影响其范围内的所有对象; 类似于灯泡的照明效果类似于灯泡的照明效果; 点光源的阴影是较耗费图形处理器资源的光点光源的阴影是较耗费图形处理器资源的光源类型。源类型。 3、Spotlight 聚光灯聚光灯 灯光从一点发出,在一个方向按照一个锥形灯光从一点发出,在一个方向按照一个锥形的范围照射,处于锥形区域内的对象受到光的范围照射,处于锥形区域内的对象受到光线照射;线照射; 类似射灯

5、的照明效果。类似射灯的照明效果。2022-4-1121.2 光源光源 4、Area light:区域光:区域光/面光源面光源 该类似光源无法应用于实时光照,仅适用于该类似光源无法应用于实时光照,仅适用于光照贴图烘焙。光照贴图烘焙。2022-4-1131.3 创建角色创建角色 角色控制资源包角色控制资源包 Assets-Import Package-Character Controller2022-4-114角色预设体角色预设体 第一人称第一人称 第三人称第三人称2022-4-1151.4 天空盒天空盒 天空盒资源包天空盒资源包 Assets-Import Package-Skyboxes 资源

6、包中包含资源包中包含9个天空盒个天空盒2022-4-116创建天空盒创建天空盒 1)首先,准备)首先,准备6张纹理(前、后、左、张纹理(前、后、左、右、上、下等右、上、下等6个面);个面); 2)然后,创建一个材质资源:)然后,创建一个材质资源:Assets-Create-Material 3)选中该材质,在)选中该材质,在Inspector视图中,视图中,单击单击Shader-RenderFX-Skybox 4)对天空盒材质赋予)对天空盒材质赋予6张纹理张纹理2022-4-117设置天空盒设置天空盒 在在Unity中,天空盒的使用方法有两种:中,天空盒的使用方法有两种: 1、渲染设置、渲染设

7、置 edit-Render Settings 2、为摄像机对象添加天空盒组件、为摄像机对象添加天空盒组件 Component-Rendering-Skybox2022-4-1181.5 雾效雾效 在在unity中,开启雾效的方法非常简单:中,开启雾效的方法非常简单: Edit-Render Settings项项2022-4-119二、脚本语言简介二、脚本语言简介2022-4-1202.1 脚本介绍脚本介绍 游戏吸引人的地方在于它的游戏吸引人的地方在于它的可交互性可交互性。 在在Unity中,游戏交互通过中,游戏交互通过脚本编程脚本编程来来实现。实现。 那什么是那什么是脚本脚本呢?呢? 脚本可以

8、理解为附加在脚本可以理解为附加在GameObject(游(游戏对象)上的用于定义游戏对象行为的指戏对象)上的用于定义游戏对象行为的指令代码。令代码。 通过脚本,开发者可以控制每一个游戏对通过脚本,开发者可以控制每一个游戏对象的创建、销毁以及对象在各种情况下的象的创建、销毁以及对象在各种情况下的行为,进而实现预期的交互效果。行为,进而实现预期的交互效果。2022-4-1212.2 Unity脚本语言脚本语言 Unity支持支持3种脚本语言:种脚本语言: JavaSript C# Boo Unity的的3种脚本语言实际上在功能和种脚本语言实际上在功能和运行速度上都是一样的,区别主要体运行速度上都是

9、一样的,区别主要体现在语言特性上。现在语言特性上。2022-4-1222.2 Unity脚本语言脚本语言 三种脚本开发语言的对比三种脚本开发语言的对比 JavaScript相对来说语法较为简单,比较容易入相对来说语法较为简单,比较容易入门,门,Unity官方示例中的脚本基本都是用官方示例中的脚本基本都是用JavaScript写的。写的。 C#对于有对于有C/C+基础的读者来说很容易学习,基础的读者来说很容易学习,C#本身有很多强大的语言特性,比本身有很多强大的语言特性,比JavaScript更适合进行深入开发。大多数的更适合进行深入开发。大多数的Unity第三方插第三方插件都是用件都是用C#写

10、的,商业游戏项目基本上都是使写的,商业游戏项目基本上都是使用用C#进行开发。进行开发。2022-4-1232.3 JavaScript基本语法基本语法 Unity使用的使用的JavaScript和网页开发中和网页开发中常用的常用的JavaScript一样吗?一样吗? 不一样不一样 它经过编译后运行速度很快它经过编译后运行速度很快 语法方面也有不少区别。语法方面也有不少区别。 也有人将其成为也有人将其成为UnityScript。2022-4-124变量变量 JavaScript里变量需要先定义后才能里变量需要先定义后才能使用。使用。 声明一个变量的方法为:声明一个变量的方法为: var 变量名变

11、量名:变量类型变量类型 例如:例如:2022-4-125变量变量 变量前面可以添加访问修饰符,如:变量前面可以添加访问修饰符,如:public、protected、private来修饰。来修饰。 Public的变量可以在的变量可以在Inspector视图中查视图中查看和编辑,不添加访问修饰符则默认为看和编辑,不添加访问修饰符则默认为public.2022-4-126变量变量 JavaScript常用的变量类型:常用的变量类型:2022-4-127数组数组 JavaScript里可以使用两种数组:里可以使用两种数组: 内建数组内建数组 速度最快;速度最快; 可以在可以在Inspector视图里编

12、辑;视图里编辑; 不能动态调整大小不能动态调整大小 Array 数组数组 Array数组可以调整大小;数组可以调整大小; 提供了常用的合并、排序等功能;提供了常用的合并、排序等功能; 不能在不能在Inspector视图里编辑;视图里编辑; 速度较内建素组慢;速度较内建素组慢;2022-4-128数组数组 内建数组内建数组2022-4-129数组数组 Array 数组数组2022-4-130数组数组 内建数组和内建数组和Array 数组可以很方便的数组可以很方便的转换:转换:2022-4-131运算、比较、逻辑操作符运算、比较、逻辑操作符 运算操作符运算操作符2022-4-132运算、比较、逻辑

13、操作符运算、比较、逻辑操作符 比较操作符比较操作符2022-4-133运算、比较、逻辑操作符运算、比较、逻辑操作符 条件操作符条件操作符2022-4-134语句语句 JavaScript的所有语句均要以分号的所有语句均要以分号(;)结尾。结尾。 语句的注释支持单行注释语句的注释支持单行注释/ 支持多行注释支持多行注释/* */。 1、条件语句、条件语句 支持支持if、if-else条件判断以及条件判断以及if-else嵌套嵌套使用。使用。 2022-4-135语句语句 2、循环语句、循环语句 支持支持while、do-while、for、for-in的循的循环操作。环操作。 2022-4-13

14、6语句语句 3、switch语句语句 Switch语句用来进行语句用来进行多条件判断,可以替多条件判断,可以替代冗长的代冗长的if-else嵌套嵌套语句语句 2022-4-137函数函数 JavaScript里的函数格式为:里的函数格式为: function 函数名函数名(参数参数1:参数类型,参数类型, 参数参数2:参数类型参数类型 ):返回值类型返回值类型 2022-4-138函数函数 JavaScript中函数均可以视为中函数均可以视为Function类型的对象,可以像变量一样进行赋类型的对象,可以像变量一样进行赋值比较等操作。值比较等操作。2022-4-139JavaScript脚本脚

15、本 对于对于JavaScript脚本,脚本,Unity会自动地会自动地为脚本添加一个与脚本文件名同名的为脚本添加一个与脚本文件名同名的类,并类,并自动自动地继承于地继承于MonoBehaviour。 如果使用如果使用C#语言来开发,则需要在脚语言来开发,则需要在脚本里本里显式显式地写出类名和继承关系。地写出类名和继承关系。2022-4-1402.4 C#基本语法基本语法 函数函数 C#变量声明方式为:变量声明方式为: 变量类型变量类型 变量名变量名; 例如:例如:2022-4-141函数函数 变量前面可以添加访问修饰符变量前面可以添加访问修饰符public、protected、private

16、其中其中public的变量可以在的变量可以在Inspector视图视图中查看和编辑,中查看和编辑,不添加访问修饰符则默认不添加访问修饰符则默认为为private(在(在JavaScript中默认为中默认为public)。)。2022-4-142数组数组 在在C#中只能使用内建数组中只能使用内建数组2022-4-143数组数组 虽然不能使用虽然不能使用Array数组,但是可以使数组,但是可以使用用ArrayList、List等容器来达到同样等容器来达到同样的目的。的目的。2022-4-144函数函数 C#里的函数格式为:里的函数格式为: 例如:例如:2022-4-145函数函数 函数参数前可以使

17、用关键字函数参数前可以使用关键字out实现返实现返回多个数值。回多个数值。 例如:例如:2022-4-146三、脚本开发基础三、脚本开发基础2022-4-1473.1 创建脚本创建脚本 Assets - Create - JavaScript (C# Script)2022-4-1483.1 创建脚本创建脚本2022-4-1493.1 创建脚本创建脚本C# ScriptJavaScript2022-4-1503.2 脚本必然事件脚本必然事件 必然事件必然事件 在在Unity的脚本中,可以定义一些特定的的脚本中,可以定义一些特定的函数,这些函数会在满足某些条件时由函数,这些函数会在满足某些条件时

18、由Unity自动调用,它们被称为必须事件。自动调用,它们被称为必须事件。2022-4-1513.3 MonoBehaviour类类 MonoBehaviour是是Unity中一个非常中一个非常重要的类,它定义了基本的脚本行为,重要的类,它定义了基本的脚本行为,所有的脚本类均需要从它直接或者间所有的脚本类均需要从它直接或者间接地继承。接地继承。 脚本必然事件就是从脚本必然事件就是从MonoBehaviour继继承而来。承而来。 除了必然事件,除了必然事件, MonoBehaviour定义了定义了对各种特定事件(例如鼠标在模型上单击,对各种特定事件(例如鼠标在模型上单击,模型碰撞等)的响应函数,这

19、些函数名称模型碰撞等)的响应函数,这些函数名称均以均以On作为开头。作为开头。2022-4-1523.3 MonoBehaviour类类2022-4-1533.4 访问组件访问组件 一个一个GameObject游戏组件可能由若干游戏组件可能由若干组件构成。组件构成。 例如,在场景中新建一个立方体后,在例如,在场景中新建一个立方体后,在Inspector视图中可以看到一个简单的立方视图中可以看到一个简单的立方体包含了体包含了4个组件:个组件: Transform 用于定义对象在场景中的位置、用于定义对象在场景中的位置、角度、缩放参数角度、缩放参数 Mesh Filter 用来从资源文件中读取模型

20、用来从资源文件中读取模型 Box Collider 用来为立方体添加碰撞效果用来为立方体添加碰撞效果 Mesh Render 用来在场景中渲染立方体模型用来在场景中渲染立方体模型2022-4-1543.4 访问组件访问组件 如何访问游戏对象的各种组件并设置组如何访问游戏对象的各种组件并设置组件参数?件参数? 对于系统内置的常用组件,对于系统内置的常用组件,Unity提供了非提供了非常便利的访问方式,只需要在脚本里直接常便利的访问方式,只需要在脚本里直接访问组件对应的成员变量即可,这些成员访问组件对应的成员变量即可,这些成员变量定义在变量定义在MonoBehaviour中并被脚本中并被脚本继承了

21、下来。继承了下来。2022-4-1553.4 访问组件访问组件 常用的组件及其对应的变量常用的组件及其对应的变量 注意:如果游戏对象上不存在某组件,则该组件对注意:如果游戏对象上不存在某组件,则该组件对应变量的值将为空值应变量的值将为空值null2022-4-1563.5 访问游戏对象访问游戏对象 在在Unity中,用户可以通过如下几种方中,用户可以通过如下几种方式来访问游戏对象。式来访问游戏对象。 1、通过名称来查找、通过名称来查找 使用函数使用函数GameObject.Find 如果场景中存在指定名称的游戏对象,那么返如果场景中存在指定名称的游戏对象,那么返回该对象的引用,否则返回回该对象

22、的引用,否则返回null。 如果存在多个重名的对象,那么返回第一个对如果存在多个重名的对象,那么返回第一个对象的引用。象的引用。2022-4-1573.5 访问游戏对象访问游戏对象 2、通过标签来查找、通过标签来查找 使用函数使用函数GameObject.FindWithTag 如果场景中存在指定标签的游戏对象,那么返如果场景中存在指定标签的游戏对象,那么返回该对象的引用,否则返回回该对象的引用,否则返回null。 如果存在多个游戏对象使用同一标签,那么返如果存在多个游戏对象使用同一标签,那么返回第一个对象的引用。回第一个对象的引用。 GameObject.Find和和.FindWithTag

23、是比较耗时的函数调是比较耗时的函数调用,因此不建议在用,因此不建议在Update函数中调用它们,而是应该在初始化函数中调用它们,而是应该在初始化中查找一次以后保持到变量中。中查找一次以后保持到变量中。2022-4-1583.5 访问游戏对象访问游戏对象 3、通过访问权限为、通过访问权限为public的变量,然的变量,然后将要访问的组件或者对象赋值给该变后将要访问的组件或者对象赋值给该变量,就可以在脚本中通过变量来访问组量,就可以在脚本中通过变量来访问组件或对象了。件或对象了。2022-4-1593.6 常用脚本常用脚本API Transform组件组件 Transform组件决定了游戏对象的位

24、置、组件决定了游戏对象的位置、方向和缩放比例。方向和缩放比例。 在游戏中如果想更新玩家位置,设置相机在游戏中如果想更新玩家位置,设置相机观察角度都免不了要和观察角度都免不了要和Transform组件打组件打交道。交道。2022-4-160Transform组件组件 Transform组件的成员变量组件的成员变量2022-4-161Transform组件组件 Transform组件的成员函数组件的成员函数2022-4-162Transform组件组件 应用示例应用示例 1) 向前方移动向前方移动 2) 绕自身坐标轴绕自身坐标轴Y旋转旋转2022-4-163Transform组件组件 应用示例应用示例 3) 绕世界坐标的绕世界坐标的Y轴旋转轴旋转 4) 使相机观察方向跟随物体移动使相机观察方向跟随物体移动2022-4-164Time类类 在在Unity中可以通过中可以通过Time类用来获取类用来获取和时间有关的信息(可以用来计算帧和时间有关的信

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论