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

下载本文档

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

文档简介

LOGO第三讲:Unity引擎入门篇2游戏开发技术4/6/20201Games本讲提纲一、创建基本游戏场景二、脚本语言简介三、脚本开发基础四、讨论4/6/20202一、创建基本游戏场景4/6/202031.1摄像机

游戏场景中至少有一台摄像机,也可以有多台摄像机。多台摄像机可以创建双人分屏效果或高级的自定义效果。

Unity中支持两种类型的摄像机

(Projection):Perspective透视摄像机Orthographic正交摄像机4/6/20204摄像机类型Perspective透视摄像机四棱台:近大远小适合3D游戏4/6/20205摄像机类型Orthographic正交摄像机长方体:大小一样适合2D游戏4/6/20206摄像机设置剔除掩码culling

mask–Layers设置4/6/20207摄像机设置画中画4/6/20208摄像机设置多相机切换–按数字键1,2,3即可进行摄像机的切换。–通过【脚本控制】4/6/202091.2光源

Unity提供了4种类型的光源,在合理设置的基础上可以模拟自然界中任何的光源。1、Directional

light:方向光源

该类型光源可以被放置在无穷远出,可以影响场景的一切游戏对象;类似于自然界中的日光的照明效果。

方向光源是最不耗费图形处理器资源的光源类型。4/6/2020101.2光源2、Point

light:点光源

点光源可从一个位置向四面八方发出光线,影响其范围内的所有对象;类似于灯泡的照明效果;

点光源的阴影是较耗费图形处理器资源的光源类型。3、Spotlight聚光灯

灯光从一点发出,在一个方向按照一个锥形的范围照射,处于锥形区域内的对象受到光线照射;类似射灯的照明效果。4/6/2020111.2光源4、Area

light:区域光/面光源

该类似光源无法应用于实时光照,仅适用于光照贴图烘焙。4/6/2020121.3创建角色角色控制资源包–

Assets->Import

Package->CharacterController4/6/202013角色预设体第一人称第三人称4/6/2020141.4天空盒天空盒资源包Assets->Import

Package->Skyboxes资源包中包含9个天空盒4/6/202015创建天空盒

1)首先,准备6张纹理(前、后、左、右、上、下等6个面);

2)然后,创建一个材质资源:

Assets->Create->Material

3)选中该材质,在Inspector视图中,单击Shader->RenderFX->Skybox4)对天空盒材质赋予6张纹理4/6/202016设置天空盒在Unity中,天空盒的使用方法有两种:1、渲染设置edit->Render

Settings2、为摄像机对象添加天空盒组件

Component->Rendering->Skybox4/6/2020171.5雾效

在unity中,开启雾效的方法非常简单:

Edit->Render

Settings项4/6/202018二、脚本语言简介4/6/2020192.1脚本介绍游戏吸引人的地方在于它的可交互性。

在Unity中,游戏交互通过脚本编程来实现。那什么是脚本呢?脚本可以理解为附加在GameObject(游戏对象)上的用于定义游戏对象行为的指令代码。通过脚本,开发者可以控制每一个游戏对象的创建、销毁以及对象在各种情况下的行为,进而实现预期的交互效果。4/6/2020202.2

Unity脚本语言Unity支持3种脚本语言:JavaSriptC#Boo

Unity的3种脚本语言实际上在功能和运行速度上都是一样的,区别主要体现在语言特性上。4/6/2020214/6/2020222.2

Unity脚本语言三种脚本开发语言的对比Javascript相对来说语法较为简单,比较容易入门,Unity官方示例中的脚本基本都是用

Javascript写的。C#对于有C/C++基础的读者来说很容易学习,

C#本身有很多强大的语言特性,比Javascript更适合进行深入开发。大多数的Unity第三方插件都是用C#写的,商业游戏项目基本上都是使用C#进行开发。2.3

Javascript基本语法

Unity使用的Javascript和网页开发中常用的Javascript一样吗?不一样它经过编译后运行速度很快语法方面也有不少区别。也有人将其成为Unityscript。4/6/202023变量

Javascript里变量需要先定义后才能使用。声明一个变量的方法为:var变量名:变量类型例如:4/6/202024变量

变量前面可以添加访问修饰符,如:

public、protected、private来修饰。–Public的变量可以在Inspector视图中查看和编辑,不添加访问修饰符则默认为

public.4/6/202025变量Javascript常用的变量类型:4/6/202026数组Javascript里可以使用两种数组:内建数组速度最快;可以在Inspector视图里编辑;不能动态调整大小Array数组Array数组可以调整大小;提供了常用的合并、排序等功能;不能在Inspector视图里编辑;速度较内建素组慢;4/6/202027数组内建数组4/6/202028数组Array数组4/6/202029数组

内建数组和Array数组可以很方便的转换:4/6/202030运算、比较、逻辑操作符运算操作符4/6/202031运算、比较、逻辑操作符比较操作符4/6/202032运算、比较、逻辑操作符条件操作符4/6/202033语句

Javascript的所有语句均要以分号(;)结尾。语句的注释支持单行注释//支持多行注释/*

*/。1、条件语句–支持if、if-else条件判断以及if-else嵌套使用。4/6/202034语句2、循环语句–支持while、do-while、for、for-in的循环操作。4/6/202035语句3、switch语句–Switch语句用来进行多条件判断,可以替代冗长的if-else嵌套语句4/6/202036函数

Javascript里的函数格式为:

function函数名(参数1:参数类型,参数2:参数类型…):返回值类型{}4/6/202037函数

Javascript中函数均可以视为Function类型的对象,可以像变量一样进行赋

值比较等操作。4/6/202038Javascript脚本

对于Javascript脚本,Unity会自动地为脚本添加一个与脚本文件名同名的类,并自动地继承于MonoBehaviour。

如果使用C#语言来开发,则需要在脚本里显式地写出类名和继承关系。4/6/2020392.4

C#基本语法函数C#变量声明方式为: 变量类型

变量名;例如:4/6/202040函数

变量前面可以添加访问修饰符public、protected、private–其中public的变量可以在Inspector视图中查看和编辑,不添加访问修饰符则默认为private(在Javascript中默认为

public)。4/6/202041数组在C#中只能使用内建数组4/6/202042数组

虽然不能使用Array数组,但是可以使用ArrayList、List等容器来达到同样的目的。4/6/202043函数C#里的函数格式为:–例如:4/6/202044函数

函数参数前可以使用关键字out实现返回多个数值。–例如:4/6/202045三、脚本开发基础4/6/2020463.1创建脚本

Assets

->

Create

->

Javascript(C#

script)4/6/2020473.1创建脚本4/6/2020483.1创建脚本C#

script4/6/202049Javascript3.2脚本必然事件必然事件–在Unity的脚本中,可以定义一些特定的函数,这些函数会在满足某些条件时由

Unity自动调用,它们被称为必须事件。4/6/2020503.3

MonoBehaviour类MonoBehaviour是Unity中一个非常重要的类,它定义了基本的脚本行为,所有的脚本类均需要从它直接或者间

接地继承。脚本必然事件就是从MonoBehaviour继承而来。除了必然事件,MonoBehaviour定义了对各种特定事件(例如鼠标在模型上单击,模型碰撞等)的响应函数,这些函数名称

均以On作为开头。4/6/2020513.3

MonoBehaviour类4/6/2020523.4访问组件

一个GameObject游戏组件可能由若干组件构成。例如,在场景中新建一个立方体后,在

Inspector视图中可以看到一个简单的立方体包含了4个组件:

Transform用于定义对象在场景中的位置、角度、缩放参数Mesh

Filter用来从资源文件中读取模型Box

Collider用来为立方体添加碰撞效果Mesh

Render用来在场景中渲染立方体模型4/6/2020533.4访问组件

如何访问游戏对象的各种组件并设置组件参数?–对于系统内置的常用组件,Unity提供了非常便利的访问方式,只需要在脚本里直接

访问组件对应的成员变量即可,这些成员

变量定义在MonoBehaviour中并被脚本继承了下来。4/6/2020543.4访问组件常用的组件及其对应的变量

注意:如果游戏对象上不存在某组件,则该组件对应变量的值将为空值null4/6/2020553.5访问游戏对象

在Unity中,用户可以通过如下几种方式来访问游戏对象。1、通过名称来查找使用函数GameObject.Find

如果场景中存在指定名称的游戏对象,那么返回该对象的引用,否则返回null。

如果存在多个重名的对象,那么返回第一个对象的引用。4/6/2020563.5访问游戏对象2、通过标签来查找使用函数GameObject.FindWithTag

如果场景中存在指定标签的游戏对象,那么返回该对象的引用,否则返回null。

如果存在多个游戏对象使用同一标签,那么返回第一个对象的引用。•GameObject.Find和.FindWithTag是比较耗时的函数调用,因此不建议在Update函数中调用它们,而是应该在初始化中查找一次以后保持到变量中。4/6/2020573.5访问游戏对象

3、通过访问权限为public的变量,然后将要访问的组件或者对象赋值给该变量,就可以在脚本中通过变量来访问组件或对象了。4/6/2020583.6常用脚本APITransform组件Transform组件决定了游戏对象的位置、方向和缩放比例。在游戏中如果想更新玩家位置,设置相机观察角度都免不了要和Transform组件打交道。4/6/202059Transform组件Transform组件的成员变量4/6/202060Transform组件Transform组件的成员函数4/6/202061Transform组件应用示例–1)向前方移动–2)绕自身坐标轴Y旋转4/6/202062Transform组件应用示例–3)绕世界坐标的Y轴旋转–4)使相机观察方向跟随物体移动4/6/202063Time类

在Unity中可以通过Time类用来获取和时间有关的信息(可以用来计算帧率,调整时间流逝速度等功能)T

温馨提示

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

评论

0/150

提交评论