版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 游戏概论单击此处添加副标题内容游戏的概念游戏游戏的发展与演变电子游戏的分类游戏程序本章学习要点:1.1 游戏的概念首先,游戏是一种行为活动;其次,游戏是以获得快乐或自足为目的;再次,游戏必须以自愿和自由为前提;最后,伴随着游戏活动的展开,无论是有意识还是无意识,游戏本身都会被赋予某些规则。根据以上四种特性,我们来对游戏进行定义:游戏是以自愿和自由为前提、以获得快乐和自足为目的且具有一定规则的行为活动。1.1 游戏的概念1.1 游戏的概念1.1.2 游戏的特征1.自愿2.体验乐趣(1) 兴趣性体验。这是一种为外界刺激物所捕捉和占据的体验,是一种情不自禁地被 卷入、被吸引的心理状态。 (2
2、) 自主性体验。这是一种由游戏活动能够自由选 择、自主决定的性质引起的主观体验,即“我想玩就玩,不想玩就不玩”或“我想怎么玩就怎么玩”的体验,这同时也是游戏自由特性的体现。(3) 愉悦性体验。(4) 活动性体验。 (5) 成就感或胜任感体验。1.1 游戏的概念1.1.3 游戏的本质1. 体验性2. 规则性3. 自主性4. 虚幻性1.2 游戏的发展与演变1.2.1电子游戏的诞生 1.2 游戏的发展与演变 1.2.2 2D游戏时代 1.2 游戏的发展与演变 2.3 3D游戏时代 1.2 游戏的发展与演变 1.2.4手机游戏 1.3 电子游戏的分类 1.3.1角色扮演类游戏按载体分类单机角色扮演游戏
3、通常意义的RPG大型多人在线角色扮演游戏MMORPG按题材分类欧美角色扮演游戏欧美文化背景下的RPG日式角色扮演游戏日式幻想风格RPG国产角色扮演游戏中国玄幻、武侠RPG按游戏方式分类回合制角色扮演游戏标准RPG动作型角色扮演游戏A-RPG策略战棋类角色扮演游戏SRPG 1.3 电子游戏的分类 1.3.2 动作类游戏按画面形式分类横版过关类动作游戏传统意义的动作游戏2D动作游戏2D通面的动作游戏3D动作游戏3D画面的动作游戏按游戏方式分类传统动作游戏标准ACT动作冒险类游戏融合了冒险解谜要素的ACT格斗类游戏FTG动作射击游戏融合了射击游戏要素的ACT动作型角色扮演游戏ARPG 1.3 电子游
4、戏的分类 1.3.3冒险类游戏按游戏方式分类文字类冒险游戏TAG图像类冒险游戏GAG动作类冒险游戏AAG日式AVG游戏JAVG休闲解密类游戏PAG按游戏方式分类文字类冒险游戏TAG图像类冒险游戏GAG动作类冒险游戏AAG 1.3 电子游戏的分类 1.3.4策略类游戏 1.3 电子游戏的分类 1.3.5射击类游戏按画面2D平台类卷轴类3D全3D2.5D按视角第一人称FPS 第三人称平视角、俯视角按主体对象角色类射击游戏以角色为射击主体载具类射击游戏驾驶射击、飞行射击 1.3 电子游戏的分类 1.3.6 体育类游戏 1.3 电子游戏的分类 1.3.6 竞速类游戏 1.3 电子游戏的分类 1.3.7
5、 竞速类游戏 1.3 电子游戏的分类 1.3.8 模拟类游戏 1.3 电子游戏的分类 1.3.9 益智类游戏 1.4 游戏程序1.4.1 游戏程序的定义1.4.2 常用的游戏编程语言(1) 汇编语言(2) C语言(3) C+语言(4) JAVA语言(5) C#语言 1.4 游戏程序1.4.3游戏引擎的定义(1) 首先是光影效果,即场景中的光源对所有物体的影响方式。(2)其次是动画。(3)游戏引擎的另一重要功能是提供物理系统。(4)渲染是游戏引擎最重要的功能之一。(5)游戏引擎还有一个重要的职责就是负责玩家与计算机之间的沟通,包括处理来自键盘、鼠标、摇杆和其他外设的输入信号。 1.4 游戏程序1
6、.4.4世界主流游戏引擎介绍(1)Unreal(虚幻)引擎(2)CryEngine 引擎(3)Gamebryo引擎(4)Unity引擎1.4.5 游戏引擎编辑器的基本功能游戏引擎是一个十分复杂的综合概念,其中包括众多的内容,既有抽象的逻辑程序概念,也包括具象的实际操作平台,引擎编辑器就是游戏引擎中最为直观的交互平台,它承载了企划、美术制作人员与游戏程序的衔接任务。一套成熟完整的游戏引擎编辑器一般包含以下几部分:场景地图编辑器、场景模型编辑器、角色模型编辑器、动画特效编辑器和任务编辑器,不同的编辑器负责不同的制作任务,以供不同的游戏制作人员使用。单击此处添加副标题内容谢谢聆听第2章 C#程序语言
7、基础知识目标熟悉Visual Studio的使用熟悉C#的基础知识以及基本语法学习面向对象的程序设计技术和方法掌握如何通过C#开发应用程序学习目标能力目标学会使用Visual Studio软件创建C#项目掌握使用Visual Studio进行编写C#程序使用C#语言编写小程序(小游戏)完成“连连看”游戏的开发2.1 C#程序设计概述2.1.1 C#语言发展历史及特点C#的由来:微软公司在2000年发布的一种新的基于.NET平台的面向对象的高级编程语言。C#特点:语法简洁,不允许直接操作内存,去掉了指针操作。彻底的面向对象设计,封装、继承、多态。与Web紧密结合,C#支持绝大多数的Web标准,如
8、HTML、XML、SOAP。安全机制很强大,.NET提供的垃圾回收器能够帮助开发者有效的管理内存资源。兼容性,因为C#遵循.NET的公共语言规范(CLS),从而能够保证与其它语言开发的组 件兼容。灵活的版本控制技术,因为C#语言本身内置了版本控制功能,因此是开发人员更容易的开发和维护完善的错误、异常处理机制。C#提供了完善的错误和异常处理机制,使程序更加健壮。2.1 C#程序设计概述2.1.2 编程语言与脚本语言编程语言(Programming language)是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使
9、用的数据,并精确地定义在不同情况下所应当采取的行动。脚本语言(Scripting Language)又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。2.1 C#程序设计概述2.1.3 C#的基本语法1.C#基本数据类型 C#的数据类型分值类型(Value Type)和引用类型(Reference Type)两大类 值类型包括简单类型(Simple Type) 结构类型(Struct Type) 枚举类型(Enum Type) 引用类型包括类类型(Class Type) 接口类型(Interface Type
10、) 委托类型(Delegate) 数组类型(Array Type) 值类型与引用类型的区别 前者一般是存在栈中,后者则是有一个引用变量,一个对象内存(存入堆中)2.1 C#程序设计概述2.1.3 C#的基本语法2.1 C#程序设计概述2.1.3 C#的基本语法2.C#运算符C#运算符包括:算术运算符、逻辑运算符、比较运算符、位运算符、条件运算符、赋值运算符算术运算符:进行算术运算的运算符,包括加法、减法、乘法、除法、取余等2.1 C#程序设计概述2.1.3 C#的基本语法逻辑运算符:进行逻辑运算的运算符,主要包括与、或、非等2.1 C#程序设计概述2.1.3 C#的基本语法比较运算符:在条件判
11、断中经常使用的一类运算符,包括大于、小于、不等于、大于等于、小于等于等,使用比较运算符运算得到的结果是布尔型的值,因此经常将使用比较运算符的表达式用到逻辑运算符的运算中。2.1 C#程序设计概述2.1.3 C#的基本语法位运算符:位运算通常是指将数值型的值从十进制转换成二进制后的运算,由于是对二进制数进行运算。位运算包括与、或、 非、左移、右移等。赋值运算符2.1 C#程序设计概述2.1.3 C#的基本语法2.1 C#程序设计概述2.1.3 C#的基本语法条件运算符:又称为三元运算符,在 C# 语言中条件运算符只有一个,具体的语法形式如下:布尔表达式 ? 表达式 1: 表达式 2其中:布尔表达
12、式:判断条件,它是一个结果为布尔型值的表达式。表达式 1:如果布尔表达式的值为 True,该条件运算符得到的结果就是表达式 1 的运算结果。表达式 2:如果布尔表达式的值为 False,该条件运算符得到的结果就是表达式 2 的运算结果。2.1 C#程序设计概述2.1.3 C#的基本语法赋值运算符:进行赋值操作的运算符2.1 C#程序设计概述2.1.3 C#的基本语法条件运算符:又称为三元运算符,在 C# 语言中条件运算符只有一个,具体的语法形式如下:布尔表达式 ? 表达式 1: 表达式 2其中:布尔表达式:判断条件,它是一个结果为布尔型值的表达式。表达式 1:如果布尔表达式的值为 True,该
13、条件运算符得到的结果就是表达式 1 的运算结果。表达式 2:如果布尔表达式的值为 False,该条件运算符得到的结果就是表达式 2 的运算结果。2.1 C#程序设计概述2.1.3 C#的基本语法运算符的优先级:多个运算符进行计算时,运算符的运算有先后顺序2.1 C#程序设计概述2.1.3 C#的基本语法2.1 C#程序设计概述2.1.3 C#的基本语法3.C#变量与常量的定义和使用变量:理解为存放数据的容器,并且在将值存放到变量中时还要为变量指定数据类型。定义变量的语法如下:数据类型 变量名;例如:定义一个整形变量xint x;常量:在第一次被赋值后值就不能再改变。定义常量需要使用关键字 co
14、nst 来完成。具体的定义常量的语法如下:const 数据类型 常量名 = 值;例如:const double PI = 3.14;2.1 C#程序设计概述2.1.3 C#的基本语法4.C#变量命名规则C#常用的命名方法有两种,一种是 Pascal 命名法(帕斯卡命名法),另一种是 Camel 命名法(驼峰命名法)。2.1 C#程序设计概述2.1.3 C#的基本语法5.C#选择结构(分支结构)选择结构:根据判断的结果来控制程序的流程,常见的分支有双分支结构和多分支结构两种双分支结构一般有三种变现形式:单个if 语句,小括号表达式为true即执行大括号里语句,如:if(布尔表达式) 语句块;单个
15、ifelse语句,小括号表达式为true即执行接下来的大括号里语句,否则即执行else后面大括号语句,如:if(布尔表达式) 语句块 1; else 语句块 2;ifelse嵌套使用,在某个分支条件上再进行条件分支选择,如:2.1 C#程序设计概述2.1.3 C#的基本语法5.C#选择结构(分支结构)if(布尔表达式 1) 语句块 1;else if(布尔表达式 2) 语句块 2;.else 语句块 n;2.1 C#程序设计概述2.1.3 C#的基本语法5.C#选择结构(分支结构)多分支型选择结构:计算switch后括号表达式的值,根据其值选择case后的值得语句执行。switch(表达式)
16、case 值 1: 语句块 1; break; case 值 2: 语句块 2; break; . default: 语句块 n; break;2.1 C#程序设计概述2.1.3 C#的基本语法6.C#循环结构循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。for循环:先执行表达式 1,然后执行表达式 2,如果表达式 2 的结果为 True,则执行表达式 4,再执行表达式 3 来改变循环变量,接着执行表达式 2 看是否为 True,如果为 True,则执行表达式 4,直到表达式 2 的结果为 False,循环结束。for(表达
17、式 1; 表达式 2; 表达式3) 表达式 4;2.1 C#程序设计概述2.1.3 C#的基本语法6.C#循环结构while循环:while 语句执行的过程是,当 while 中布尔表达式的结果为 True 时,执行语句块中的内容,否则不执行。while(布尔表达式) 语句块;2.1 C#程序设计概述2.1.3 C#的基本语法6.C#循环结构do while循环:先执行 do 中语句块的内容,再判断 while() 中布尔表达式的值是否为 True,如果为 True,则继续执行语句块中的内容,否则不执行,因此 do while 语句中的语句块至少会执行一次。do 语句块;while(布尔表达式
18、);2.1 C#程序设计概述2.1.3 C#的基本语法7.C# goto语句goto 语句用于直接在一个程序中转到程序中的标签指定的位置,标签实际上由标识符加上冒号构成。语法形式如下:goto Labell; 语句块 1;Labell 语句块 2;2.1 C#程序设计概述2.1.4 C#面向对象程序设计面向对象语言三大特点:封装、继承、多态1. 封装封装:把一个或多个项目封闭在一个物理的或者逻辑的包中C# 支持的访问修饰符有:public:所有对象都可以访问。private:对象本身在对象内部可以访问。protected:只有该类对象及其子类对象可以访问。internal:同一个程序集的对象可
19、以访问。protected internal:访问限于当前程序集或派生自包含类的类型。2.1 C#程序设计概述2.1.4 C#面向对象程序设计2. 继承继承:子类自动地从父类那里继承所有的字段、方法、属性、索引器等成员作为自己的成员。class Apublic int a;class B : Anew public int a;A为父类,B是A的子类,B继承A的所有特性。接口:不同类之间的相同成员的集合,通过关键字interface定义2.1 C#程序设计概述2.1.4 C#面向对象程序设计3. 多态多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.重载:父类与子类之间存在
20、方法名相同,参数不同的方法。调用哪个方法取决于方法的参数。重写:父类中的方法为抽象方法(virtual关键字声明方法),子类使用(override关键字)重新声明该方法。2.1 C#程序设计概述2.2 使用C#进行程序开发2.2.1 一个典型的游戏循环代码框架用一个循环语句来维持游戏的持续运行状态:游戏初始化 while(!游戏结束) 游戏逻辑 保持帧速率 游戏结束 清理资源释放内存空间流程图:2.1 C#程序设计概述2.2 使用C#进行程序开发2.2.2 简单的Windows程序(见教材)2.2.3 第一个“游戏”(见教材)2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.1 游戏
21、概述(1) 概要:玩家可以将 2 个相同图案的牌连接起来,连接线不多于 3 根直线,就可以成功将两个牌消除。 (2) 操作:第一次使用鼠标单击游戏界面中的牌,该牌此时为“被选中”,以特殊方式显示;再次以鼠标单击其他牌,若该牌与被选中的牌图案相同,且把第一个牌到第二个牌连起来,中间的直线不超过 3 根,则消掉这一对牌,否则第一个牌恢复成未被选中状态,而第二个牌变成被选中状态。(3) 胜利条件:将游戏界面上的牌全部消除掉。(4) 失败条件:到规定时间,界面上的牌仍未全部消掉。2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.2 游戏设计思路软件分成两个模块:整体界面的设计和图片的随机生成
22、;图片路径判断函数;2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.3 界面设计连连看游戏界面设计由两部分组成:游戏区域和控制区域。游戏区域:包括游戏操作区域和计时区域,是游戏面向用户的主要功能窗口。控制区域:控制方块的种类数目,单个方块的重复数。启动游戏,重列方块,以及计算游戏得分。2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.4 图片的随机生成(具体见教材)图片的随机生成分两步骤实现。程序运行时即载入游戏需要的N张图片,默认情况下图片种类数是18,重复数是4(重复数必须是偶数),并且可以选择是否重列。通过一个循环,加载随即的选择N种图片。当确认游戏开始时,通过画图
23、过程完成图片生成。1.3.5 事件处理(具体见教材)游戏共有两个单击按钮:开始游戏(进入游戏状态)、重列(重新加载图片)2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.6 图片的消除与得分(具体见教材)1.图片的消除游戏连线思路:假设目标点 p1、p2 ,如果有两个折点分别为z1、z2,那么,所要进行的是:如果验证p1、p2 直线连线,则连接成立。搜索以p1、p2的x、y方向四条直线(可能某两条直线会重合)上的有限点,每次取两点作为z1、z2,验证p1到z1/z1到z2/z2到p2 是否都能直线相连,是则连接成立。2.计分规则本游戏的计分规则为:直连得10分,一个拐点得20,两个拐
24、点得40。用一个Label控件存储得分。2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包1.新建安装部署项目单击“新建项目”,选择“其他项目类型”“安装与部署”“安装向导”(安装项目也一样),然后单击“确定”按钮2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包2.安装向导关闭后打开安装向导,单击下一步2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包3.开始制作安装向导完成后即可进入项目文件夹:双击“应用程序文件夹”在右边的空白处右击,选择添加文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来(注意是bin/de
25、bug下面的所有文件)2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包3.开始制作然后右击可执行文件,创建快捷方式2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包3.开始制作然后把快捷方式分别剪切或复制到左边的“用户的程序菜单”和“用户桌面”中。这样安装程序安装安装完成后会在“开始”“所有程序”和“桌面”上生成程序的快捷方式2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包3.开始制作然后右击左边的“应用程序文件夹”选择“属性”命令2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包3.开始制作将属性中的
26、“defaultlocation”的路径中的“manufacturer”去掉,不然的话做好的安装程序默认安装目录会是“c:programm file你的用户名安装解决方案名称”。然后打开解决方案管理器,右击解决方案名称,选择属性(注意在本项目中时在setup6上右击鼠标)2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包3.开始制作在打开的属性页中,选择“系统必备”2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包3.开始制作在打开的系统必备页中,选中如上中的选择项,这个很重要!(一般情况下默认已经选择上了,只要单击确定,回到下面界面)选上以后,在生
27、成的安装文件包中包含.netframework组件2.1 C#程序设计概述2.3 休闲类小游戏:连连看2.3.7 项目打包3.开始制作在打开的系统必备页中,选中如上中的选择项,这个很重要!(一般情况下默认已经选择上了,只要单击确定,回到下面界面)选上以后,在生成的安装文件包中包含.netframework组件单击“确定”按钮,然后单击“生成”“生成解决方案”单击此处添加副标题内容谢谢聆听2021走进Unity的世界第3章 Unity 3D游戏开发基础Unity是一款功能强大的集成开发编辑器和引擎,为开发者提供了创新和发布一款游戏所必需的工具,使开发者无论是要开发一款3D游戏还是2D游戏都能够得
28、心应手。学好Unity游戏开发必须具备一定的创新能力和设计能力。本章通过一个吃金币的小游戏来让大家掌握Unity的基本开发流程,游戏场景的保存,场景的开发,脚本的编写以及最后游戏的发布等等一系列内容。本章概述 熟悉Unity 引擎概念熟悉Unity界面了解Unity脚本的基础语法掌握Unity中发布程序的方法熟悉Unity 3D游戏建模过程本章学习要点目录3.13.2 Unity引擎概览 Unity脚本程序开发 Unity脚本的基础语法 Roll A Ball小游戏3.33.4第3章 Unity 3D游戏开发基础3.1 Unity引擎概览Unity是一款功能强大的集成开发编辑器和引擎,为开发者
29、提供了创新和发布一款游戏所必需的工具,使开发者无论是要开发一款3D游戏还是2D游戏都能够得心应手。Unity所有的功能都有不同的带有标签的窗口视图,每个视图都提供了不同的编辑和操作功能,以帮助开发者完成开发工作。1.菜单栏(1)File(文件)File(文件)菜单列表中各项名称及说明如表1-1所示。3.1.1 熟悉界面3.1.1 熟悉界面名称说明New Scene创建新的场景。就像是游戏中的一个一个的场景一样,Unity3D为用户提供了方便的场景管理,用户可以随心所欲的创建出自己想要的场景。然后再把每个场景链接起来组成一个完成的游戏。Open Scene打开一个已经创建的场景。Save Sce
30、ne保存当前场景。Save Scene as当前场景另存为。New Project新建一个新的项目工程。用户想要制作出自己的游戏,第一步就是创建一个属于这个游戏的工程,这个工程是所有元素的基础。有了工程之后,用户就可以在这个工程里面添加自己的场景。表 1-1 File菜单列表中各项名称及说明3.1.1 熟悉界面续表 1-1 File菜单列表中各项名称及说明名称说明Open Project打开一个已经创建的工程。Save Project保存当前项目。Build Setting项目的编译设置。在编译设置选项里面,用户可以选择游戏所在的平台及对工程中的各个场景之间的管理。可以添加当前的场景加入到工程
31、的编译队列当中。其中的Player Settings选项中可以设置程序的图标,分辨率,启动画面等。Build & Run编译并运行项目。Exit退出Unity3D。(2)Edit(编辑)Edit(编辑)菜单列表中各项名称及说明如表1-2所示。3.1.1 熟悉界面3.1.1 熟悉界面表 1-2 Edit【编辑】菜单列表中各项名称及说明名称说明Undo撤销上一步操作。Redo重复上一步动作。Cut剪切。Copy复制。Paste粘贴。Duplicate复制并粘贴。Delete删除。Frame Selected选择一个物体后,使用此功能可以把视角调到观察这个选中的物体上。Find在资源区可以按资源的名
32、称来查找。Select All可以选中所有资源。3.1.1 熟悉界面续表 1-2 Edit【编辑】菜单列表中各项名称及说明名称说明Network Emulation网络仿真。可以选择相应的网络类型进行仿真。Project Settings项目设置。其中包括输入设置,标签设置,音频设置,运行的时间的设置,用户设置,物理设置,品质设置,网络管理,编辑器管理等。Preferences选项设置。对Unity3D的一些基本设置,如:选用外部的脚本编辑,皮肤,各种颜色的设置。以及一些用户基本的快捷键的设置。Play编译并在Unity3D中运行程序。Render Settings渲染设置。如果觉得整体画面的
33、色彩质量不尽如人意,可在此处进行调节。Graphics Emulation图形仿真。主要是配合一些图形加速器的处理。3.1.1 熟悉界面续表 1-2 Edit【编辑】菜单列表中各项名称及说明名称说明Snap Settings临时环境,或理解为快照设置。Network Emulation网络仿真。可以选择相应的网络类型进行仿真。Render Settings渲染设置。如果觉得整体画面的色彩质量不尽如人意,可在此处进行调节。Graphics Emulation图形仿真。主要是配合一些图形加速器的处理。Network Emulation网络仿真。可以选择相应的网络类型进行仿真。Project Set
34、tings项目设置。其中包括输入设置,标签设置,音频设置,运行的时间的设置,用户设置,物理设置,品质设置,网络管理,编辑器管理等。Snap Settings临时环境,或理解为快照设置。(3)Assets(资源)Assets(资源)菜单列表中各项名称及说明如表1-3所示。3.1.1 熟悉界面3.1.1 熟悉界面表 1-3 Assets(资源)菜单列表中各项名称及说明名称说明Reimport重新导入资源。Create创建功能。可以用来创建各种脚本,动画,材质,字体,贴图,物理材质,GUI皮肤等。Show In Explorer打开资源所在的目录位置。Open打开选中文件。Delete删除选中的资源
35、文件。Import New Asset导入新的资源。Refresh刷新,用于导入资源包之后。3.1.1 熟悉界面续表 1-3 Assets(资源)菜单列表中各项名称及说明名称说明Reimport重新导入资源。Create创建功能。可以用来创建各种脚本,动画,材质,字体,贴图,物理材质,GUI皮肤等。Show In Explorer打开资源所在的目录位置。Open打开选中文件。Delete删除选中的资源文件。Import New Asset导入新的资源。(4)GameObject(游戏对象)GameObject(游戏对象)菜单列表中各项名称及说明如表1-4所示。3.1.1 熟悉界面3.1.1 熟
36、悉界面表 1-4 GameObject(游戏对象)菜单列表中各项名称及说明名称说明Create Empty创建一个空的游戏对象。可以对这个空的对象添加各种组件,即各种属性。在Component里面会讲到。Create Other创建其他类型的游戏对象。这里面包括了很多内容,基本上囊括了Unity3D所支持的所有对象。其中有粒子系统,摄像机,界面文字,界面贴图,3D的文字效果,点光源,聚光灯,平行光,长方体,球,包囊,圆柱体,平面,表面,音频混音区域,树,玩偶,风域等。Center On Children这个功能是作用在父节点上的,即把父节点的位置移动到子节点的中心位置。3.1.1 熟悉界面续表
37、 1-4 GameObject(游戏对象)菜单列表中各项名称及说明名称说明Make Parent选中多个物体后,点击这个功能可以把选中的物体组成父子关系,其中在层级视图中最上面的那个为父节点,其他为这个节点的子节点。Apply Change To Prefab应用变更为预置。Move To View这个功能经常用到,把选中的物体移动到当前编辑视角的中心位置,这样就可以快速定位。Align With View把选中的物体移动到当前编辑视角的中心位置,深度为0,即移动到和视角同一个平面上。Align View To Selected把编辑视角移动到选中物体的中心位置。(5)Component(组件
38、)Component(组件)菜单列表中各项名称及说明如表1-5所示。3.1.1 熟悉界面3.1.1 熟悉界面表1-5 Component(组件)菜单列表中各项名称及说明名称说明Mesh添加网格属性。Particles粒子系统。能够造出很棒的流体效果。Physics物理系统。可以使物体带有对应的物理属性。Audio音频。可以创建声音源和声音的听者。Rendering渲染。Miscellaneous杂项。Scripts脚本。Unity内置的一些功能很强大的脚本。Camera-Control摄像机控制。(6)Window(窗口)Window(窗口)菜单列表中各项名称及说明如表1-5所示。3.1.1
39、熟悉界面3.1.1 熟悉界面表1-6 Window(窗口)菜单列表中各项名称及说明名称说明Next Window下个窗口。Previous Window前一个窗口。Layouts布局。Scene场景窗口。Game游戏窗口。Inspector检视窗口,主要指各个对象的属性,也可称为属性面板。3.1.1 熟悉界面续表1-6 Window(窗口)菜单列表中各项名称及说明名称说明Hierarchy层次窗口。Project工程窗口。Animation动画窗口。用于创建时间动画的面板。Profiler探查窗口。Asset Server源服务器。Console控制台。(7)help(帮助)help(帮助)菜
40、单列表中各项名称及说明如表1-7所示。3.1.1 熟悉界面3.1.1 熟悉界面表1-7 help(帮助)菜单列表中各项名称及说明名称说明About Unity关于Unity。Enter Serial Number输入序列号。Unity ManualUnity手册。Reference Manual参考手册。Scripting Manual脚本手册。Unity ForumUnity论坛。Welcome Screen欢迎窗口。Release Notes发行说明。Report a Problem问题反馈。2.工具栏Unity的工具栏包括五个基本控制,位于菜单栏的下方。(1)Transform变换工具:
41、用来控制和操作场景以及游戏对象,主要应用于Scene场景视图,每个工具的用法如表1-8所示。3.1.1 熟悉界面3.1.1 熟悉界面表 1-8 Transform变换工具工具名称快捷键说明Hand(手掌)工具Q平移Scene视图。Translate(移动)工具W移动游戏对象。Rotate(旋转)工具E旋转游戏对象。Scale(缩放)工具R缩放游戏对象。Rect(矩形)工具T编辑游戏对象的矩形手柄。(2)Gizmo坐标系工具:用来切换中心点的位置,用法如下: :改变游戏对象的轴心点。Center: 改变游戏对象的轴心为物体包围盒的中心。Pivot: 使用物体本身的轴心。 : 改变物体的坐标。Gl
42、obal: 世界坐标。Local: 自身坐标。3.1.1 熟悉界面(3)播放工具:用来在编辑器运行或暂停游戏的测试,用法见表1-9。3.1.1 熟悉界面工具名称快捷键说明Play(播放)工具Ctrl+P运行游戏。Pause(暂停)工具Ctrl+Shift+P暂停游戏。Step(单帧)工具Ctrl+Alt+P一次执行一步游戏。表 1-9 播放工具(4)Layers(分层)下拉列表:用来控制游戏对象在Scene视图中的显示和隐藏,各功能如表1-10所示。3.1.1 熟悉界面表 1-10 Layers下拉列表信息分层名称说明Everything显示所有游戏的对象。Nothing不显示任何游戏对象。D
43、efault显示默认的游戏对象。TransparentFX显示透明的游戏对象。Ignore Raycast显示不处理投射事件的游戏对象。Water显示水对象。(5)Layout(布局)下拉列表:改变窗口和视图的布局,并且可以保存所创建的任意自定义布局。3.1.1 熟悉界面Project(项目视图)包含整个工程中所有可用的资源,例如模型、脚本等。把它称为一个文件夹也适合,因为毕竟它的确对应了一个文件夹即每个Unity项目文件都会包含一个Assets文件夹,Assets文件夹是用来存放用户所常见的对象和导入的资源,并且这些资源是以目录的方式来组织的,Unity编辑器也只认这个文件夹,如图3-2所示
44、。3.1.2 Project视图图 3-2 Project视图Hierarchy(层级视图)显示当前场景中的每个GameObject(游戏对象),包含摄像机、灯光和模型等,以文字的方式显示在列表中。“游戏对象”是Unity中非常重要且基础的概念,我们在游戏中进行的所有操作几乎均是在不断改变游戏对象。相当于Photoshop中的“层”的概念,即每个层可以包含一个自身可以显示的对象,其下方还可以包含多个子对象,子对象还可以包含子对象,不断嵌套。而这里的每个层,都是一个“游戏对象”,可在Hierarchy(层级视图)中选择对象并将一个对象拖到另一个对象内,以应用Parenting(父子化)。在场景中
45、添加和删除对象后,还将在Hierarchy(层级视图)中显示,如图3-3所示。3.1.3 Hierarchy视图图 3-3 Hierarchy视图Inspector(检视视图)用于显示当前所选游戏对象的相关属性与信息,还用于显示资源的属性、内容以及渲染设置、项目设置等参数,千万不要被Inspector这个单词或者“检视”这个词所迷惑,它所代表的含义只是相当于属性面板而已,即它是针对你当前选中的物件进行详细的描述。当然有些时候,不仅仅是描述,它还可以编辑属性。我们可以选中的物件不外乎两大类:游戏对象(来自Hierarchy面板)和资源文件(来自Project面板),如果选中游戏对象,我们这可以编
46、辑此游戏对象的属性,比如精确编辑其位置、旋转、缩放等;如果选中资源文件,我们可以修改其导入设置,比如我们选择一张图片,可以设置其贴图类型、压缩格式等等,如图3-4所示。3.1.4 Inspector视图图 3-4 Inspector视图Scene(场景视图)是游戏场景设计视图,是游戏画面主要的编辑区域,所有的对象均在这里布置,设置它们的位置、大小、旋转等等信息,组成一幕画面,一个Scene只能组合出一幕画面,那么多幕画面则需要由多个场景构成,一个场景是游戏的一个显示单位,如战斗场景,欢迎场景,设置场景等。场景中的每个物体都有一个三维,unity 的坐标系是左手坐标系,即 x 轴向右,y 轴向上
47、,z 轴就向里,如图3-5所示。3.1.5 Scene视图图 3-5 Scene视图Game(游戏视图)是游戏运行时的显示视图,对 Scene 视图的修改都会时时同步到 Game 视图,如图3-6所示。3.1.6 Game视图图 3-6 Game视图控制台和状态栏是两个很有用的调试工具。状态栏总是出现在编辑器的底部(虽然在通常情况下它只是一条空白的灰线)。可以通过菜单WindowConsole或按Ctrl+Shit+C快捷键打开控制台,也可以单击状态栏来打开控制台。按下“播放”按钮开始测试游戏,并且看看控制台和状态栏是怎样一起随着Sphere高度的数据而进行更新的。可以在脚本中让游戏向控制台和
48、状态栏输出一些信息,这有助于调试和修复错误。游戏遇到的任何错误、消息或者警告,以及和这个特定错误相关的任何细节,都会显示在控制台里。3.1.7 控制台和状态栏3.2 Unity脚本程序开发Unity中的脚本分为不同的方法,不同方法在特定的情况下被回调以实现特定的功能。如果想要脚本程序起作用,实现的主要途径是将脚本附到特定的游戏对象中。下面是最常用的几个回调方法。Start方法。这个方法在游戏场景加载时调用,在该方法内可以写一些游戏场景初始化之类的代码。Update方法。这个方法会在每一帧渲染之前调用,大部分游戏代码在这里执行,除了物理部分的代码。FixedUpdate方法。此方法会每隔固定的时
49、间间隔系统调用,这里也是基本物理行为代码执行的地方。3.2.1 Unity脚本概述1.继承自MonoBehaviour类 Unity中所有挂载到游戏对象上的脚本包含的类都继承自MonoBehavior类(直接地或间接地)。MonoBehavior类中定义了各种回调方法,例如Start、Update和FixedUpdate等。通过AssetCreateC#Script 创建的脚本,系统模板就已经包含了必要的定义。2.类名字必须匹配文件名 C#脚本中类名需要手动编写,而且类名还必须和文件名相同,否则当脚本挂载到游戏对象时,控制台会报错。3.使用Awake或Start方法初始化C#用于初始化脚本的代
50、码必须置于Awake或Start方法中。Awake和Start的不同之处在于,Awake方法是在加载场景时运行,Start方法是在第一次调用Update或FixedUpdate方法之前调用,Awake方法在所有Start方法之前运行。3.2.2 Unity中C#脚本的注意事项4.Unity脚本中协同程序有不同的语法规则Unity脚本中协同程序(Coroutines)必须是IEnumterator返回类型,并且yield用yield return 替代。具体可以使用如下的C#代码片段来实现。 1 using UnityEngine; 2 using System.Collections; /引入
51、系统包 3 public class BNUCoroutines : MonoBehaviour /声明类 4 IEnumerator SomeCoroutines() /C#协同程序 5 yield return 0; /等待一帧 6 yield return new WaritForSeconds(2); /等待2S 7 3.2.2 Unity中C#脚本的注意事项5.只有满足特定情况变量才能显示在属性查看器中只有序列化的成员变量才能显示在属性查看器中,而private和protected类型的成员变量只能在专家模式中显示,而且,其属性不被序列化或显示在属性查看器,如果属性想在属性查看器中显
52、示,必须是public类型的。6.尽量避免使用构造函数不要在构造函数中初始化任何变量,而是使用Awake或Start方法来实现。而且在单一模式下使用构造函数可能会导致严重后果,会引发类似随机的空引用异常。因此,一般情况下尽量避免使用构造函数。事实上,没必要在继承自MonoBehaviour的类的构造函数中写任何代码。3.2.2 Unity中C#脚本的注意事项3.3 Unity脚本的基础语法1.位移与旋转在Unity中对游戏对象的操作是通过脚本来修改游戏对象的Transform(变换对象)与Rigidbody(刚体属性)参数来实现的。这些参数的修改是通过脚本编程来实现的。具体开发流程如下:创建C
53、ube对象。单击GameObject3D ObjectCube,创建一个Cube对象作为本案例案例对象,可以在左侧面板单击Cube查看其相关属性。编写脚本。在Assets面板单击CreateC#Script,创建一个C#脚本,并将其命名为Player,然后编写脚本。挂载脚本。脚本开发完成后,将这个脚本挂载到游戏对象上。3.3.1 常用操作2.记录时间记录时间需要用到Time类,Time类中比较重要的变量为deltaTime它指的是从最近一次调用Update或者 Fixed Update方法到现在的时间。具体开发流程如下:创建Cube对象。单击 GameObject3D ObjectCube编写
54、脚本。在Assets面板单击CreateC# Script。挂载脚本。脚本开发完成后,将这个脚本挂载到游戏对象上。3.3.1 常用操作在Unity中组件属于游戏对象,组件(Component)其实是用来绑定到游戏对象(Game Object)上的一组相关属性。本质上每个组件是一个类的实例。常见的组件有:MeshFilter、MeshCollider、Renderer、Animation等,如表3-1所示。3.3.2 访问游戏对象组件组件名称 变量名称 组件名称变量名称 TransformtransformRigidbodyrigidbodyRenderertendererCameraCamer
55、a (只在摄像机对象有效)LightLight (只在光源 对象有效)AnimationanimationCollidercollider表 3-1 常见组件访问其他游戏对象的步骤如下: 1通过属性查看器指定参数 2确定对象的层次关系 3通过名字或标签获取游戏对象 4通过组件名称获取游戏对象3.3.3 访问其他游戏对象3D游戏开发中经常需要用到向量和向量运算,比如物体的位移和旋转等,Unity中提供了完整的用来表示二维向量的Vector2类和表示三维向量的Vector3类。Vector 3类中常量对应的值如表3-2所示。Vector3类中方法的作用如表3-3所示。 3.3.4 向量常量值常量值
56、Vector3.zeroVector(0,0,0)Vector3.oneVector( 1,1,1)Vector3.forwardVector(0,0,1)Vector3.upVector(0,1,0)Vector3.rigthVector( 1,0,0)表 3-2 Vector 3类中常量对应的值3.3.4 向量表 3-3 Vector3类中方法的作用方 法作用方法作用Lerp两个向量之间的线性插值。Slerp在两个向量之间进行球形插值。OrthoNormalize使向量规范化并且彼此相互垂直。MoveTowards从当前的位置移向目标。RotateTowards当前的向量转向目标。Scal
57、e两个矢量组件对应相乘。Cross两个向量的交叉乘积。Dot两个向量的点乘积。Reflect沿着法线反射向量。Distance返回两点之间的距离。Project投影一个向量到另一个向量。Angle返回两个向量的夹角。Min返回两个向量中长度较小的向量。Max返回两个向量中长度较大的向量。operator +两个向量相加operator -两个向量相减operator *两个向量相乘operator /两个向量相除operator =两个向量是否相等operator !=两个向量是否不相等ClampMagnitude返回向量的长度,最大不超过maxLength所指示的长度。SmoothDamp随
58、着时间的推移,逐渐改变一个向量朝向预期的目标。脚本开发中需要用到许多变量,在一般情况下,定义在方法体外的变量是成员变量,可以在属性查看到,可以随时在属性查看器中修改它的值。通过private创建的变量是私有变量,在属性查看器中就不会显示该变量,避免错误地修改。3.3.5 成员变量和全局变量Unity中如果想创建游戏对象,可以通过创建游戏对象菜单在场景中进行,如果想创建很多相同的物体(例如射击出去的子弹,保龄球瓶等)时,可以通过实例化(Instantiate)快速实现。3.3.6 实例化游戏对象协同程序,即在主程序运行时同时开启另一段逻辑处理,来协同当前程序的执行。但它与多线程程序不同,所有的协
59、同程序都是在主线程中运行的,它还是一个单线程程序。在Unity中可以通过StartCoroutine方法来启动一个协同程序。终止一个协同程序可以使用StopCoroutine(string methodName),而使用 StopAIICoroutines()是用来终止所有可以终止的协同程序,但这两个方法都只能终止该MonoBehaviour中的协同程序。3.3.7 协同程序和中断1.MonoBehaviour类 MonoBehaviour类是C#脚本的基类,其继承自Behaviour类。在C#脚本中,必须直接或间接的继承MonoBehaviour 类。2. Transform类场景中的每一个
60、物体都有一个Transform组件,它就 是Transform类实例化的对象。用于储存并操控物体的位置、旋转和缩放。每一个Transform可以有一个父级,允许分层次应用位置、旋转和缩放。可以在 Hierarchy :查看层次关系。Transform类中包含了很多的成员变量。3.3.8 一些重要的类3. Rigidbody类Rigidbody组件可以模拟物体在物理效果下的状态,它就是 Rigidbody类实例化的对象。它可以让物体接受力和扭矩,让 物体相对真实地移动。如果一个物体想被重力所约束,其必须含有Rigidbody组件。Rigidbody类中包含了很多的成员变量。4.Character
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械抓手课程设计
- 机械手搬运模拟课程设计
- 机械原理教案课程设计
- 机械原理及其课程设计
- 机械力学基础课程设计
- 2016年湖南省娄底市中考真题语文试题(解析版)
- 2024-2025学年高中语文 第1单元 1 沁园春 长沙教案 新人教版必修1
- 机构年卡课程设计
- 机房预定系统课程设计
- 机房的工程勘察课程设计
- 安全教育教学大纲
- 下肢动脉硬化闭塞症临床路径
- 西泠印社版书法指导五年级下册《左右结构》(二)
- 超星尔雅学习通《数学文化》章节测试含答案
- 初中英语过去式过去分词默写
- 中国中铁股份有限公司项目经理管理办法(试行)
- 污水处理站培训资料
- 水果验收标准全
- 玉柴任职资格管理办法--胜任力建设必须参考该文件
- 工程赶工措施方案
- 中国烟草总公司山西省公司诚信应聘承诺书.doc
评论
0/150
提交评论