2023年河北工业大学U三D实验报告.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2023年河北工业大学U三D实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年河北工业大学U三D实验报告.pdf(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计 算 机 游 戏 程 序 设 计实 验 1-4报告实验一 G U I游戏界面的实现一、实验目的与规定1.熟悉及掌握GU I 的高级控件,以及用法。2.掌握GU I 自定义皮肤用法3.熟悉GU I Layou t 的使用。4.熟悉2 D贴图的绘制和帧动画的实现方法。二、实验原理及知识点在游戏的整个开发过程中,游戏界面设计占据非常重要的地位。由于游戏启动后,第一个映入玩家眼帘的就是游戏的U I 界面。UI界面重要涉及贴图,按钮和高级控件等。通常游戏界面的展现方式有很多种,大多数都由自定义图形界面组成。Un i t y 为开发者提供了一套非常完善的图形化界面引擎,它涉及常见的游戏窗口、文本框、输入
2、框、拖动条、按钮、贴图框等,无论是做软件还是做游戏,都可以很方便地使用。此外,Unity提供了界面自定义皮肤的功能。控件不仅可以使用默认的皮肤,还可以自定义皮肤,自定义皮肤不仅可以美化游戏界面,还可以提高游戏品质。U n ity 游戏界面重要由GUI完毕。在本章中,我们将使用J a vaSc rip t脚本向读者具体介绍U n it y 中有关GUI界面的所有高级控件。1.G U I高级控件系统高级U I 控件己经成为游戏开发中不可缺少的一部分,高级界面由系统提供,所以运营效率要远远高于低档界面(高级界面为系统实现,低档界面为自己手动实现)。拿按钮控件来说吧,不使用系统提供的按钮控件,我们也可
3、以使用低档界面模拟实现按钮的功能。但是,低档界面实现的“按钮”没有高级界面实现的效率高,但是低档界面制作的“按钮”比较灵活,可以任意修改。GUI高级控件的种类非常繁多,涉及标签、按钮、输入框和拖动条等。他们可用于任何游戏或软件的界面研发。GUI高级控件的应用也非常广泛,比如网络游戏中输入账号与密码的提醒框,通关游戏后上传游戏积分的按钮,创建角色时输入的角色信息等。下面将分别向读者介绍GUI高级控件的相关用法。1.1 L a b e l 控件使用L abel控 件(标签控件),可以在游戏界面中以文本的形式展示出一段字符串信息。使用Labe 1控件,我们不仅可以输入字符串,还可以贴图。1.2 Bu
4、tt o n 控件在开发中,Button控件(按钮控件)是十分常见的控件之一,可以用来判断用户在程序中的一些操作行为,比如对话框中的“拟定”和“取消”按钮。按钮共有3个基本状态组成:未点击状态、击中状态、点击后状态。一般情况下,游戏界面的按钮只监听“未点击状态”和“点击后状态”。按照展现方式,按钮可以分为两种:“普通按钮”和“图片按钮”。普通按钮为系统默认显示的按钮,而图片按钮可以设定按钮的背景图案。1.3 T e xtF i e 1 d 控件T ext F ield控件重要用于监听用户输入的信息,其应用非常普遍,比如在游戏登陆界面中,玩家输入用户名和密码后,点击“确认”按钮判断其输入是否对的
5、,或者游戏通关后填写胜利者姓名与输入相关的游戏信息等。一般情况下,使 用 GUI.Tex tFiel d()方法显示输入框,该方法的返回值为用户输入的字符串信息。使 用 GUL Password F ie ld。方法,可以将用户输入的信息显示为任意字符串,一般在输入密码时将密码以“*”的形式显示。后面的参数“*”【0】用来将输入的字符串显示为“*”。1.4 S lider 控件SI i de r 控件由滑块和滑动条组成。使用S 1 ide r 控件,可以计算出滑块在滑动过程中占整个滑动条的比例。假如滑动条的整体长度为10 0,则滑块滑动的范围就是。至 100。按照展示方式,滑动条可分为两种:一
6、种为水平滑动条(H orizontals1 i d e r),另一种为垂直滑动条(V e rtic a IS 1 i d e r),它们之间的用法完全相同。在开发中,我们常使用滑动条来调节音量或者颜色等。1.5 Scrol 1 View 控件假如游戏界面中的G U I控件过多,超过了屏幕的显示范围,就需要使用S c ro llV i ew控件来完毕它的展示效果。S c roll View控件可设定一个滚动显示区域。假如横向或纵向的GUI控件超过了其显示区域。视图下方或者右方将会出现滚动条。在开发中使用Scro 1 IView控件的情况非常普遍,比如假如游戏中帮助信息或者关于信息过长,就可以使用
7、滚动条来查看相关信息。1.6 群组控件(G r o up V iew控件)群组视图(GroupView控件)可将多个视图所有放在一个群组当中。将视图添加进群组当中后,群组中任何视图的坐标都是相对坐标,它是相对群组视图左上角的坐标。修改群组视图坐标后,群组中所有视图的坐标都会跟着修改。推荐使用群组视图来制作游戏界面,由于设备的屏幕尺寸不同,这样做可以避免对坐标进行多次修改的麻烦。1.7 窗口窗口在游戏开发中并不陌生,所有视图都需要依赖窗口来显示,我们可以把窗口理解为视图的父类。前面我们介绍了各式各样的游戏视图,它们都属于窗口的子类。游戏界面可以由若干个窗口组成,窗口又由若干个视图组成。创建窗口时
8、需要设定它的显示区域,在窗口中可以添加任意组件,前提是组件的显示区域必须在窗口当中,否则无法显示。此外,窗口中所有控件的坐标均采用相对坐标,相对窗口左上角的坐标。1.9 GUI S k in通过之前章节的学习,我想大家已经掌握了 Uni t y 大部分的GUI控件,但是直接使用这些控件开发游戏还远远不够,由于系统默认的界面实在过于粗糙与单调。为了让自己的游戏界面活灵活现,我们需要使用GUI Skin为控件添加一个美丽的皮肤。2 GUIL a yo u t 游戏界面布局游戏界面的制作效果有很多中,有复杂绚丽的界面,也有简朴明了的界面,而设计方式的仁者见仁,智者见智。在跨平台游戏界面开发中,最麻烦
9、的事就是各个平台的分辨率不同样,甚至相同平台的分辨率也不同样,这无疑给移植导致非常大的麻烦。因此,在制作游戏界面时,使用绝对坐标值是相称危险的一件事。由于假如跨平台移植的话,分辨率发生了改变,开发者就得为其重新设计坐标,这在开发效率上将大打折扣。为了避免后期对坐标重新进行计算,前期制作界面时可以考虑自适应屏幕布局,G U I 为开发者提供了游戏布局的概念,并且在布局的过程中所有的坐标点都是对称坐标,所以使用G U I 游戏界面布局来制作界面将更有效地实现自适应屏幕。2.1 G U I 与 G U L a y o u t 的区别通过之前的学习,我相信大家对GUI应当并不陌生了,那么G U IL
10、a y o u t 是什么东西呢?它是游戏界面的布局。从命名中就可以看到这两个东西非常相像,但是在使用过程中两者还是存在一定区别的。使用G U I 绘制控件的时候,需要设立控件的R e c t。方法,也就是说需要设定控件的整体显示区域。这样设立的控件非常不灵活,由于它的坐标以及大小已经固定死了,这是假如控件中的内容长度发生改变,就会直接影响展示效果。例如,在界面中绘制一个按钮时,按钮中的显示文本刚好填充在整个按钮当中,假如动态加长文本的显示长度,就会超过按钮的显示范围,使按钮控件变得不伦不类。我们需要制作控件的自适应,所以不能使用Re c t()方法固定控件的显示区域,而是需要使用界面布局制作
11、界面。使用G U I L a y o u t 来制作界面,可以很方便的为我们解决上述难题。使用G U I 制作界面的时候,需要给每一个控件设定显示区域,系统会自动帮我们计算控件的显示区域,并且保证他们不会重合。(注意之前介绍的大部分G UI 控件都可以使用G UI L a y o u t 进行绘制)2.2 线性布局线性布局是以线性连续排列的形式将G U I控件有规律的显示在屏幕中,共分为两种:一种为水平线性布局,另一种为垂直线性布局。默认的界面是以垂直线性布局的方式来排列。创建水平线性布局时,一方面需要使用BeginHori z ontal 0方法,然后将控件添加至线性布局当中,最后使用End
12、Horiz o n ta l()方法来结束当前线性布局。而假如使用垂直线性布局,则需要使用BeginVertic a 1 ()方法与 EndV e r t ic a I()方法。无论是水平线性布局还是垂直线性布局,都可以使用嵌套的形式来制作游戏界面,也就是说,父类布局中可以继续嵌套一个子类布局,子类布局完全受父类布局的限制。善用布局之间的嵌套,可以方便我们制作更为复杂的游戏界面。2.3控件偏移布局与布局之间都是以一种线性方式紧密排列的,无法直接修改布局当中两个相连控件的距离,为了解决这个问题,就需要使用空间偏移。在控件中使用S p ace()方法可以设立控件之间的偏移量。3 2D贴图与帧动画2
13、D贴图好比在屏幕中绘制了一张静态图片,其绘制方式有两种,第一种由 GUI绘制,第二种是将贴图以材质的形式绘制在游戏对象中,在本节中,我们将着重介绍第一种方式。帧动画的实现原理就是使用若干张静态图片以一定的时间一帧一帧地在屏幕中切换播放,好比在屏幕中预先设定一个现实动画的区域。然后将图片在这个现实区域中频繁切换播放。由于绘制的图片有规律的切换播放,给人们带来了视觉的假象,感觉就像播放动画同样。3.1绘制贴图要在屏幕中绘制一张静态贴图,需要使用GUI.D raw TexttureO方法,该方法可设定图片的显示位置、缩放比例和渲染混合等,该方法的原型如下:其中第一个参数表达图片的绘制区域,第二个参数
14、表达绘制图片的图像,第3个参数表达图片的缩放模式,第四个参数表达的是否启动图片混合模式,第五个参数表达图片缩放宽高的比例。在Pr。je c t视图中将需要加载的图片存储在根目录“R e sourc e s”中。需要说明的是,一定要将加载的图片保存在“Resources”文献夹中,否则程序将无法辨认。Resource s.Load()方法和Resou r ces.Lo a d A11()方法的参数均为资源文献夹的完整途径,只但是前者返回的事读取的资源对象,后者返回的是资源对象的数组。3.2绘制动画本节中我们开始学习帧动画的绘制。一方面需要一组帧动画的资源,在这里我们选择一套2D人物四宫格行走图,
15、在绘制帧动画之前,我们需要学习帧动画的绘制原理:一方面需要在屏幕中设定一个显示区域,然后将动画中的每一个帧动画按照固定的时间在这个区域中按顺序切换,继而实现动画的播放。这里我们使用程序将动画资源存储在动画数组当中,然后设定动画的刷新时间,每次刷新动画时将在原有的显示区域中绘制下一帧图片,到了最后一帧则从第一帧重新开始,以此类推你。3.3 实例一一人物移动结 合 2D 帧动画的绘制原理,本节我们将制作一个游戏实例,效果如图3.4 所示。在屏幕中共绘制了四个按钮,通过点击这四个按钮来控制主角的移动,并且播放主角在相应方向上的行走的动画。程序需要监听用户出发的按钮来切换动画方向,比如当用户点击“向上
16、”按钮时,将播放主角向上走的动画。我们使用x、y 全局变量来记录当前主角的坐标,上下行走为加减x坐标,左右行走为加减y 坐标,最后根据主角的x、y 坐标来绘制但前动画在屏幕中的位置,从而实现控制主角向四个方向行走。4 本部分内容小结本部分一方面介绍了 Un i t y 中GU I 界面的相关组件以及自定义皮肤的实现方式,其中每一个GU I 高级组件都配备了一个小例子供读者学习;然后介绍了 GUI与 GUI La y o u t的区别,已介入和使用GUILay o u t 布局来制作界面;接着介绍了使用GU I绘 制 2D 贴图与动画,以及如何控制主角移动的游戏实例;最后通过制作一个游戏主界面,
17、回顾了前面所学的游戏界面的相关内容。请大家认真阅读本章内容,打好游戏界面设计的基础,为后面进一步学习做好准备。三、实验内容及环节1.熟悉GUI高级控件,练习使用GUI的高级控件制作2 3 个游戏界面。2 .练习使用G U I自定义皮肤,实现游戏界面的字体,背景颜色等设立。3.熟悉GUILayout的使用,联系使用GUILa y o u t的水平线性布局和垂直线性布局,并加适当偏移。4.熟 悉21)贴图的绘制和帧动画的实现方法,练习在界面中绘制静态图片和动画。代码如下:#pragma str i c tvar str:S tri n g;var mm:String;funct i o n Sta
18、r t()function U p date()funct i on OnG U I()e GUI.B eginG r oup(Rect(Screen.wi d t h/2-150,S c r e e n.hei g ht/2-100,4 0 0,3 0 0);GUI.Label(Rect(20,2 0,80,3 0),“菜单:”);if(G UI.B utton(Rect(1 0 0,4 0,60,2 0)J 自动漫游)。Application.1.o adLevel(“自动漫游“);)o i f(GUI.Button(R e(1(100,10,6 0,2 0),“音频播放”)Ap p li
19、e a tion.Lo a d Le v el(1 1 音频播放”);i f (GUl.Bu t to n (Rect(100,70,60,2 0 画线”)。Applic a tion.LoadL e vel(画线”);if(GU I.But t on(Rec t(1 0 0,100,60,2 0)/,视频播放)Appl i cation.L o a dLevel(视频播放“);GUI.EndGroupO;)实 验 二U nity游戏脚本一、实验目的与规定1.熟悉及掌握Mono De v e lo p脚本编辑器的使用方法。2 .Un i t y 脚本的生命周期。3.纯熟使用脚本来操作游戏对象。
20、二、实验原理及知识点Un i t y游戏脚本在整个游戏开发中可以说是关键要素,游戏对象之间任何逻辑的判断都需要通过脚本来完毕。假如说游戏贴图、模型资源的好坏决定一个游戏的视觉品味,那么脚本将直接决定这个游戏的内在质量,决定这个游戏好玩与否。游戏脚本与其他游戏组件用法相同,必须绑定在游戏对象中才干执行它的生命周期。Un i t y 一共支持3 种语言来编写脚本,分别是J a v a S c r i p t、C#、B o o,这 3种语言不分好坏,用哪一种来编写都可以达成同样目的。从编程技巧与难度上来讲,J a v a Sc r i p t更容易上手一些,建议初学者使用J a v a S c r
21、iPt进行入门阶段学习,但是进阶阶段推荐使用C#语言来编写脚本,由于C#语言在编程思想上更符合Un i t y 引擎的原理。由于与传统语言相比,B oo语言的语法更为怪异,所以开发中几乎不会用到它。1 Mo n oDevelop脚本编辑器U n i t y 可部署在W i 1 I(1 0亚 5 与服(2 05 X 梁总操作系统下,所以U ni t y 需要一个跨平台的脚本编辑器。M o n o D e v e l o p 脚本编辑器并不是Un i ty公司所研发的。它是一个开源项目,任何人或公司都可以使用。由于该编辑器具有强大的跨平台功能,并且使用起来非常方便,所以不久被U nit y公司作为
22、核心脚本开发环境使用。2 Uni t y 脚本的生命周期U n i t y 脚本从唤醒到销毁有着一套比较完善的生命周期,添加任何脚本都必须遵守自身生命周期法则。下面介绍一下生命周期中有系统自身调用的几个比较重要的方法。f u n c t i on A w a k e ()。脚本唤醒,此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次。f u ne t i on S t a rt()。此方法在 A w a ke()方法之后、U p d a t e ()方法之前执行,并且只执行一次。f u ne t i on U pd a t e ()正常更新,用于更新逻辑。此方法每帧都
23、会由系统自动调用一次。f u nc t i o n L a t e U pd a t e ()推迟更新,此方法在U pd a t e ()方法执行完后调用,同样每一帧都调用。f u n c t ion F i x e d llpd a t e ()固定更新,固定更新常用于移动模型等操作。由于固定更新每一帧调用的时间相隔都是完全同样的,所以模型的移动过程会比较均匀。f u nc t ion O nG U I ()。绘制界面。这个方法大家应当不会陌生,由于在第3章中已经做过很多例子了。它和U pd a t e()方法同样,每一帧都在调用,只是它是用来绘制界面的。f u nc t io n 0 n
24、D e s t roy ()t r a n s f o r m.Ro t a t e():该方法用于设立模型绕自身旋转,起参数为旋转的速度与旋转的方向。t r a n s f o r m.R R o t a t e A r o u nd ():该方法用于设立模型围绕某一个点旋转.T i m e.d e l t a T i m e:用于记录上一帧所消耗的时间,这里用作模型旋转的速度系数。Ve c t o r 3.r i g h t:x 轴方向。Ve c t o r 3.u p:y 轴方向。V e c t o r 3.f o r w a r d:z 轴方向。当模型绕自身旋转时,可以使用o b jC
25、u b e.t r a n s f o r m.Ro t a t e ()方法,当模型围绕抹一点旋转时,则 使 用 o b jCu b e.t r a ns f o r m.R o t a te A r o u n d。方法。4.3平移游戏对象平移的含义是模型在原有位置的基础上继续移动,在代码中可以使用tr a ns f o r m.T r a n s 1 a t e ()方法来实现,此方法的唯一参数为平移模型的方向。4.4缩放游戏对象在 U ni t y中,可以通过代码动态缩放游戏中的模型。重要有三种缩放方式:沿 x轴缩放、沿 y 轴缩放、沿 z轴缩放。每个轴都有自身的缩放洗漱,模型默认的缩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 河北 工业大学 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内