软件工程_基于Unity3d仿Minecraft沙盒游戏的设计与实现.doc

上传人:温桑 文档编号:49461022 上传时间:2022-10-08 格式:DOC 页数:39 大小:3.52MB
返回 下载 相关 举报
软件工程_基于Unity3d仿Minecraft沙盒游戏的设计与实现.doc_第1页
第1页 / 共39页
软件工程_基于Unity3d仿Minecraft沙盒游戏的设计与实现.doc_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《软件工程_基于Unity3d仿Minecraft沙盒游戏的设计与实现.doc》由会员分享,可在线阅读,更多相关《软件工程_基于Unity3d仿Minecraft沙盒游戏的设计与实现.doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、本科毕业设计(论文) 基于Unity3d仿Minecraft沙盒游戏的设计与实现Design and Implementation of Minecraft Sandbox Game Based on Unity3d院 (系)计算机科学与技术学院专 业软件工程班 级软件工程九班学 号16210120912学生姓名宁德伟指导教师吴瑞然提交日期年 月 日内容摘要随着时间的推移,人们的生活方式发生了重大的变化,在生活中也积累了各种各样的压力,学习上的压力、生活上的压力等等,且各方面的压力越来越大,所以人们通过寻找各种方式来释放自身的压力,其中游戏成为一种不错的选择,游戏也因此开始发展。随着时代还有科

2、技发现,游戏数量和种类越来越多,并且随着硬件和软件性能的不断提高,游戏的质量与娱乐性也越来越高。如繁星般多的游戏的诞生,渐渐融入人们的生活中,促使了游戏广阔的发展前景。沙盒游戏是众多类型游戏里面其中比较特别的一种。沙盒游戏起源于沙盘游戏,沙盘游戏原本就是由玩家利用各种素材搭建出自己独特的场景的一种游戏,沙盒游戏也正好继承了这一特点。众多不同主题的沙盒游戏里面,都有一些共同的特点,例如没有清晰明确的主线,所有事件都要玩家自己触发;玩家最根本的目标是在游戏中活下去,其次是探索地图;地图广阔,由多种多样的游戏环境组成;游戏元素多样化,多种元素共存一体,还有最大的特点是玩家可以改变世界,甚至是创造世界

3、。本论文探究基于 Unity3D 的仿Minecraft游戏的开发。在沙盒式游戏中,Minecraft是极为出名的,它可以让玩家可以肆无忌惮地发挥其创作才能。通过学习制作一个仿Minecraft的沙盒式游戏,不仅可以学习到如何制作一款沙盒游戏,学会使用Unity3D开发游戏,还可以培养我们的分析与解决问题的能力。本篇论文围绕本游戏基本的需求功能,来设计出本沙盒游戏的大概的组成部分,然后再编写脚本代码来实现游戏需求中的各个功能。关键词: Unity3D Minecraft 沙盒游戏AbstractWith the passage of time, peoples lifestyles have

4、undergone major changes, and various kinds of pressures have accumulated in their lives. The pressures on learning, the pressures on life, etc., and the pressures in all aspects are increasing. , So people find ways to release their pressure, and games have become a good choice, and games have start

5、ed to develop. With the era of science and technology also found that the number and type of game more and more, and with the continuous improvement of hardware and software performance, quality games and entertainment have become more sophisticated. The birth of games as many as stars has gradually

6、 integrated into peoples lives, prompting the games broad development prospects.Sandbox games are a special one of many types of games. The sandbox game originated from the sandbox game. The sandbox game was originally a game where players used various materials to build their own unique scenes. The

7、 sandbox game also inherited this feature. Many sandbox games with different themes have some common features. For example, there is no clear main line, and all events must be triggered by the player; the most basic goal of the player is to survive in the game, followed by exploring the map; the map

8、 is vast It consists of a variety of game environments; game elements are diversified, multiple elements coexist together, and the biggest feature is that players can change the world or even create the world.In this paper, based on Unity3D explore the development of imitation Minecraft game. In san

9、dbox games, Minecraft is extremely famous, it allows players to unleash their creative abilities with impunity. By learning to make a sandbox game that mimics Minecraft, you can not only learn how to make a sandbox game, learn to use Unity3D to develop games, but also cultivate our ability to analyz

10、e and solve problems. This paper focuses on the basic requirements of this game to design the approximate components of this sandbox game, and then write script code to realize the various functions in the game requirements.Key words: Unity3D Minecraft Sandbox game广东东软学院本科毕业设计(论文)目 录第一章 绪论11.1选题的目的和

11、意义11.2国内外的研究与发展现状21.2.1国外发展的现状21.2.2国内发展的现状21.2.3未来发展的启示31.3论文设计思路3第二章 系统开发工具与相关技术42.1 Unity3D 游戏引擎42.1.1 Unity3D 软件介绍42.1.2 API 接口42.1.3 物理引擎52.1.4 Unity 常用生命周期的函数52.1.5 GUI(图形用户界面)62.2 3Ds Max 软件62.3 C#开发语言62.4 Visual Studio 20197第三章 游戏设计83.1 游戏组成83.2游戏场景设计83.2.1 开始场景设计93.2.2 加载页面设计93.2.3 游戏内场景设计1

12、03.3 游戏人物设计113.3.1 人物模型设计113.3.2 人物功能的实现11第四章 游戏总体设计134.1开始场景设计134.1.1 开始场景134.1.2 设置场景154.2 加载界面154.2.1. 加载界面的功能164.2.2 加载界面的制作164.3 游戏场景174.3.1 游戏界面的功能174.3.2 游戏地形的创建184.3.3 游戏界面UI的创建19第五章 游戏代码实现225.1游戏开始界面代码实现225.1.1 游戏标题225.1.2 开始按钮235.1.3 设置按钮245.1.4 退出按钮255.2游戏加载界面代码实现255.2.1 异步加载265.3 游戏界面代码实

13、现265.3.1 随机地形生成27第六章 游戏测试296.1 开始界面296.2 加载界面306.3 游戏内场景30第七章 总结32参考文献33致谢34第一章 绪论1.1选题的目的和意义科技的不断发展,让人们的生活水平越来越高,游戏也变成人们生活中的一部分,对玩家而言更是如此。玩家的需求让电子游戏的内容与形式越来越多样化,对游戏的各方面的要求也越来越高。其中因大多数玩家的需求,更真实的感官体验自然而然地变成了玩家们的追求,而玩家们的追求促使它逐渐演变成电子游戏的一种发展方向,这时,3D游戏这一分类出现在玩家们的视线里,如期望般让玩家带来真实的感官体验。与传统的2D 游戏相比,3D游戏能让用户在

14、视觉上感觉更加真实和享受。因此,做一款 3D游戏,不仅是为了符合玩家们的口味,也是为了迎合游戏市场的需求,在游戏市场站稳脚跟。 Unity3D是2004年由一家美国的视频游戏开发商开发的一款游戏开发引擎,因为Unity3D操作简单,窗口功能明确,自身功能强大,使得一些想进入游戏开发行业的人员可以快速入门,也吸引了不少游戏开发人才学习使用Unity3D开发游戏;使用Unity3D开发游戏的成本较低,而且开发周期相对较短,所以Unity3D的使用在游戏行业前景上十分广阔。Unity3D的各种特点优点,加上目前游戏市场前景相对不错,使得许多游戏公司想用Unity3D开发的游戏在游戏市场分一杯羹,因此

15、各个游戏公司都开始高薪招聘使用Unity3D开发游戏的游戏开发人才。积极的游戏市场、诱人的工作薪资,还有许多乐观的因素,使得Unity3D游戏开发的前景越来越好。从各种游戏视频中,其实可以发现在很多游戏和3D技术开发使用中都或多或少有一些Unity3D的影子,例如在一些游戏里会有第三人称视角和第一人称视角之间的来回切换的功能,在Unity3D中通过对摄像机的来回切换就可以实现这样的功能。丰富的功能,简单的操作,低廉的成本,广阔的市场,这就是Unity3D为什么如此火的原因。Minecraft,看着这个英文名可能有人知道是什么,但很多人应该是对这个英文单词一脸陌生,其实翻译过来就是我的世界。在众

16、多的沙盒式游戏中,我的世界可以说是最出名的,在世界各地都有这款游戏的玩家。在我的世界里,玩家可以对开放式的无限地形做出任意的改变,随地可得的游戏素材,有大概的主线剧情和丰富的支线成就系统,让人眼花缭乱的合成系统,多种玩法模式选择,模仿现实生活中数字电路的红石电路,允许加入各种游戏mod丰富游戏模型和玩法,这些特性将这个游戏变得与现实世界更加贴合,让各种游戏玩家都可以在这个游戏里面找到符合自身兴趣的玩法,让各种艺术创作者可以在我的世界里面创作出属于自己独一无二的作品。多种多样的游戏特性再加上简单易懂的操作过程,使得游戏在上线没多久就吸引了众多玩家进入这个创作无限的开放性沙盒游戏,到现在我的世界已

17、经衍生出许多二次艺术创作。本次选择模仿我的世界的无限随机地形和基本玩法,制作一款简单的仿Minecraft(我的世界)的沙盒游戏。同时选择制作这沙盒游戏为课题也是想通过热门游戏的形式来熟悉和了解Unity的相关技术操作,从而在未来能在开发3D游戏的主流趋势下站住脚跟。1.2国内外的研究与发展现状1.2.1国外发展的现状在1969年的欧美国家,第一款网络游戏悄然诞生,有个人为“柏拉图”(PLATO:Programmed Logic for Automatic Teaching Operation)系统编写了一个软件,这款软件可以同时让两个用户联机打同一款游戏,这就是网络游戏最初的雏形。之后在九十

18、年代初,世界第一款3D第一人称射击游戏被美国的ID software的创始人之一的约翰卡马克与他的团队开发出来,其公司研发的Doom游戏引擎也成为历史上第一个3D游戏引擎。在20世纪末,世界各主要发达国家的游戏产业格局已基本形成并开始大规模发展,其中日本因为自然资源相对匮乏,看到游戏产业发展前景的日本政府便选择游戏娱乐产业为国家提供经济收入的途径之一,而游戏产业也不负众望,成为国民经济的重要支柱。游戏产业初露锋芒,世界多个经济强国都嗅到了金钱的味道,纷纷把游戏产业当做国家的重要支柱产业来发展,其中韩国政府的做法更甚,让电子游戏甚负担起了振兴国民经济的使命,将游戏定位为文化产业的核心,在今天看来

19、,韩国政府的选择的确是挺明智的,其游戏产业也成为了韩国的经济命脉,给韩国带来了充足的内需和出口。1.2.2国内发展的现状中国在游戏行业相比其他国家起步较晚,1998年6月的联众游戏世界是中国网络游戏正式出现的开端,而国内首款自主研发的3D游戏开始于2003年。中国的游戏厂家主要集中于北京、上海、广州、深圳、成都等城市。到目前为止,我国有许多游戏厂家推出了许多有强大市场影响力的游戏作品,例如大话西游、传奇、天龙八部。而且,网络游戏的兴起也带动了其他相关产业的发展。虽然在国内,在3D游戏方面已经有了明显的进展和较多的研究,但是因为3D游戏引擎的开发需要很多的人力财力,一般的小型游戏公司都无力承担,

20、所以国内自主研发的3D游戏引擎还是十分稀少,小型游戏公司都是选择其他价格相对便宜且技术成熟的游戏引擎和开发工具,例如本文所讲的Unity3D游戏引擎和与之相提并论的寒霜引擎和虚幻引擎。1.2.3未来发展的启示综上所述,通过对比国内外的发展现状,可以看出虽然我国的游戏开发还未发展到国外的水平,但是国内的发展前景还是很好的,而且现在国内的游戏开发人才也是越来越多,相信在未来我国的游戏行业会越来越好。1.3论文设计思路本论文从最初构想到分析,结合了一些游戏开发资料,设计出了一个沙盒式游戏的制作过程,其中具体介绍游戏的制作步骤,包括游戏的功能实现和一系列实现代码。论文分为六个章节,大概内容如下:第一部

21、分:绪论,主要阐述该毕业设计的目标和意义和国内外相关内容的研究和发展。第二部分:大概介绍本游戏制作时所使用的的各类开发工具。第三部分:介绍本游戏的需求分析,包括目标、任务和功能需求分析。第四部分:介绍本游戏的总体设计。 第五部分:介绍本游戏各个组成部分的代码的实现。第六部分:测试游戏并进行打包封装。第七部分:对本次的游戏制作的总结和反思。第二章 系统开发工具与相关技术本章主要说明本沙盒游戏开发时所使用到的各类开发工具和与之相关的技术,并着重介绍本游戏开发所使用的的Unity3D游戏引擎。2.1 Unity3D 游戏引擎 2.1.1 Unity3D 软件介绍 丹麦Unity Technologi

22、es公司开发为了更快更好地开发游戏,便开发了的一款支持多平台的综合型游戏开发工具,这个工具就是Unity3D,全球开发者都因为其成熟的开发环境和简便的使用方式而赞不绝口。它提供了目前最好的跨平台服务,在正常情况下,平台之间的各种差异性经常会影响到游戏的开发进度,但是 Unity3D 作为一款支持多平台的综合型游戏开发工具,可以把游戏在所有主流平台之间完美移植。为了更好地帮助游戏开发者开发和维护游戏,Unity3D提供了许多使用方便个、功能强大的工程视图,其中最基础的工程视图是 project 视图,hierarchy 视图,inspector 视图,scene 视图和game 视图。proje

23、ct视图用于查看存放游戏中的资源文件,比如模型、材质、字体等素材,还包括该游戏的各个场景;hierarchy 视图用于查看已打开的游戏场景中的各个组成部分;inspector视图用于展示游戏物体的各种属性,前提是当前用鼠标选中的,否则视图不会有属性显示;scene 视图用于查看存放在游戏中模型资源,游戏内所有的模型、材质、灯光都可以在此视图查看,也可以直接通过拖动project视图内的素材到此视图来创建需要用到的模型;game 视图用于观察游戏的运行,在此视图无法编辑游戏物体,但可以清楚地看到游戏的运行效果,以达到临时测试运行的作用。2.1.2 API 接口 Unity3D 丰富的 API 可

24、以帮助游戏开发者完成各种需求。API 是一些已经定义好的公共函数,可以让游戏开发者在不需要了解内部方法的实现过程就可以得到函数输出的结果。Unity3D提供了丰富的组件和类库,让开发者可以随意调用组件去实现自己的功能。通过这些API函数,开发人员可以很方便地实现项目的初始化,熟练掌握和使用这些API对于游戏开发效率提高很重要。2.1.3 物理引擎 近年的游戏中,有很多游戏都开始注重对物理引擎的利用,比如绝地求生中重力对子弹的影响,人类一败涂地中角色对物体的作用等。这几年来,许多游戏都开始重视物理引擎,因为现在的玩家除了关注游戏的关卡是否好玩,游戏类型是否符合玩家心中的类型,游戏的可玩度高不高,

25、也开始关注游戏带给玩家的真实感和代入感,而一个游戏对象的设计都尽量符合其现实物体的特性,这样游戏才会显得真实可信,这样玩家才能在游戏中获得更大的真实感。在Unity3D游戏设计的物理引擎中,刚体、碰撞、材质以及关节运动等一系列组件为引擎的组成部分。游戏物理引擎的主要作用就是模仿物体在现实生活中受到外力作用时的互相影响、互相做力的作用的表现的现象。通过该游戏平台的物理引擎得到的这些逼真的游戏体验会让你产生这就是一个在游戏里创造现实的错觉。 2.1.4 Unity常用生命周期的函数 传统的代码程序一般都是从规定的函数入口开始运行,而Unity3D的代码是模拟一个事物的生老病死一样,用生命周期事件代

26、替一般的流程性编译,通过编译这些生命周期内的事件。这些生命周期函数在Unity 内部不断地迭代,最终就会产生游戏运行时在摄像机前表现出来的结果。下面按照生命周期介绍Unity3D中一些常用的事件函数:Start():只有脚本挂载的游戏对象在被启用的时候才能够被运行。 Update():如果脚本在开始就启用了MonoBehaviour,那么在游戏运行的时候就会一帧调用一次。Update函数的作用就是更新每一帧后脚本挂载的对象的状态,一般来讲游戏都是以帧为单位进行状态更新,因为大多数游戏的逻辑都是按帧率进行执行的。FixedUpdate():如果脚本在开始就启用了MonoBehaviour,那么在

27、游戏运行的时候就会以开发者设定的固定帧调用一次FixedUpdate函数,如果设定的固定帧是一帧,那么FixedUpdate函数执行的结果就与Update函数执行的结果一样,两个方法不同的地方就是FixedUpdate函数可由开发者去控制执行的频率但是Update函数不可以。有一点需要注意的是,在处理Rigidbody刚体的时候,应使用FixedUpdate函数去处理而不是Update函数,因为设备的性能或者是其他的原因,Update函数调用的频率有可能是不一样的,这会导致使用Update函数处理刚体的时候刚体的运动轨迹就可能会很异于现实生活,但FixedUpdate函数是以固定时间去调用,所

28、以就不会发生这样的情况,刚体的运动轨迹看起来就会比较平滑。2.1.5 用户图形界面本文中沙盒游戏的用户图形界面主要使用UGUI进行UI界面的开发。图形用户界面的英文简写是GUI,OnGUI、NGUI、UGUI等都是Unity3D中的UI的分类。Unity 的 GUI 系统被称作 UnityGUI,UnityGUI 内含有多种功能齐全的UI控件,通过在UI界面中的创建控件操作,就可以同时完成控件实例化,定位和功能定义,然后开发者只需要写少量的脚本并将脚本挂载到相应的控件上,让控件可以控制运行挂载的脚本,就可以实现多种多样的功能。2.2 3Ds Max 软件 3Ds max是一款基于计算机操作系统

29、开发的三维建模软件,由discreet公司开发,因为功能强大所以成为游戏开发中常用的游戏建模工具之一。本软件在开发出来后原本的用途是使用本软件制作出动画,所以在此之后被一些影视制作者看重,然后被进一步用于影视片中的特效制作。 虽然3Ds Max功能强大,在学校有学习过一些该软件相应的操作,但是对于我来说,让我建造游戏的模型还是有些勉强的,所以在在这里只是简单介绍一下3Ds Max的用途,本游戏内使用的模型都是在网上找到的制作好的模型,但因为建模文件格式有可能不是Unity3D能直接导入使用的格式或者建模文件有错误,所以需要使用3Ds Max检查建模是否正常,然后再导出为.fbx格式的模型文件在

30、导入到Unity3D中使用。 2.3 C#开发语言 C#是一款面向对象的编程语言,由微软发布出来。 C#有许多特性与Java的许多类似,因此跟Java一样,C#也有许多程序员使用。虽然C#是可以跨平台运行,但是这个跨平台的前提是需要有特定的虚拟机,所以在没有虚拟机的情况下在其他平台是无法运行C#代码的,但因为Unity3D支持平台开发,而且支持使用C#进行脚本编程,所以才使C#可以多平台编译;语法清晰明了,类库使用方便,这些都是C#的有点,或许这也是Unity3D支持C#进行脚本代码开发的原因。2.4 Visual Studio 2019 Visual Studio是在Windows平台上流行

31、的的集成开发环境(IDE)。Visual Studio有着大多数IDE都有的功能,支持代码的编辑、调试运行和封装打包,而且还有许多其他的功能,可以帮助开发者减少开发难度;目标使用人群是编写在微软支持的所有平台上运行的代码的程序员,Visual Studio目前支持的编程语言有C+、C#、F#、R、Python、Visual Basic、TypeScript和JavaScript。第三章 游戏设计本章内容主要是本沙盒游戏的各部分组成,并进行大概的阐述,以明确本游戏开发的目标和功能需求。3.1 游戏组成本沙盒游戏由两大部分组成,分别是游戏场景和游戏人物两个部分,游戏场景由游戏UI界面和游戏地形组成

32、,是玩家可以自由查看的部分,游戏人物是玩家操控的游戏物体,是玩家用于体验游戏的游戏对象。具体游戏功能组成如图3-1所示。图3-1 游戏组成部分3.2游戏场景设计本游戏模仿Minecraft,将游戏整体分为三个场景,分别是开始场景,加载场景和游戏内场景。开始场景为UI界面,该界面模仿Minecraft开始界面的布局,以游戏标题和三个按钮组成,按钮用来进入游戏内场景和进行游戏的部分设置。加载场景插在开始场景和游戏内场景之间,让玩家有一种游戏正在加载的感觉,同时可以在加载界面加入游戏提示,用于提示玩家。加载界面用了游戏界面的截图作为背景图,且在加载条上使用了与背景图颜色相关的颜色作为加载条颜色,用M

33、inecraft中让玩家最熟悉的草方块作为加载条图案,贴合该游戏的主题。游戏内场景就是游戏运行时的界面,是游戏中非常重要的构成,元素由与Minecraft游戏中相似的游戏道具、地形、环境、建筑等元素组成,是整个游戏非常重要的构成元素,此场景就是让玩家体验整个游戏的场景。3.2.1 开始场景设计开始游戏界面与Minecraft的开始界面类似,在游戏窗口的正上方显示本游戏的名字,接着在下方的位置放置开始场景所需要的开始按钮、设置按钮和游戏退出按钮,其中点击开始按钮则进入游戏加载页面,点击设置按钮则弹出设置窗口进行游戏设置,点击退出则关闭游戏。开始界面的组成如图3-2所示。图3-2 开始场景组成3.

34、2.2 加载页面设计加载页面由进度条、背景图片和游戏提示文字组成。加载进度条放在窗口总体位置的下方,然后游戏提示在进度条上方的位置,用于提示新手玩家如何玩这款游戏。待进度条到最后的时候,通过点击任意按钮跳转到游戏场景并开始游戏。加载页面组成如图3-3所示。图3-3 加载场景组成3.2.3 游戏内场景设计因为本游戏为仿Minecraft的沙盒游戏,所有的游戏地形搭建都为随机生成,所以刚进入场景时没有地形。界面开始应有游戏设置的按钮,用于让玩家可以在游戏中也可以修改部分游戏设置。图3-4为游戏内场景组成的示意图。图3-4 游戏内场景的组成3.3 游戏人物设计3.3.1 人物模型设计因为这是一个沙盒

35、游戏,所以游戏人物相对其他模型要求十分精细的来说就十分简单,人物只需要几个方块,调整大小后就可以拼搭成游戏所需要的游戏人物。对应所需要的人物模型我从网上找到了与Minecraft主题比较贴合的模型,但因为下载下来的模型不是Unity3D所支持的.fbx格式,因此我需用用到3D Max,将模型导入到3D Max之后再将其另存为.fbx格式导出,这样我就可以将人物模型导入到Unity3D中使用了。模型导入的方法十分简单,这里又突出了Unity3D强大的一点,我们可以直接将模型拖动到Project视窗内,Unity3D就会自动为我们导入模型到对应的文件夹内。图3-5为人物模型。图3-5 人物模型3.

36、3.2 人物功能的实现导入人物模型后首先调整好人物相对游戏地形的大小,然后给人物添加控制器、刚体和碰撞体,这样任务就具有了真实的物理属性,可以在游戏中与场景物体产生碰撞。游戏人物所需要的功能有人物移动,地形的破坏、物品的创建和素材的碰撞获取。功能的添加是用脚本实现的,在这里我选择通过给人物添加脚本做例子,在脚本里添加移动方法,让玩家可以随控制人物的移动。我默认设置了WASD键为人物前后左右的移动按键。其实Unity3D有许多非常好用的插件,例如人物控制器。使用人物控制器,我们可以减少许多代码的书写,且可以更加高效和方便让玩家地控制人物模型的移动,一般人物控制器默认的移动按键为WSAD键。如果有

37、一些特殊的方法,我们可以使用Visual Studio 2017来编写自己所需要的代码,来实现我们所需要的游戏功能。游戏人物的功能组成如图3-6所示。图3-6 游戏人物功能组成第四章 游戏总体设计本章是结合前面第二章、第三章的内容来阐述游戏总体的设计,并对各部分的设计进行详细的介绍和说明,明确游戏各部分的设计明细和实现方法,是游戏实现过程更加清晰,方便进行之后游戏开发的流程,减少异常情况的发生,有利于之后游戏的完善和其他玩法的开发。4.1开始场景设计第一个场景为开始场景,包括开始游戏界面和设置界面。4.1.1 开始场景开始场景是一个2D的UI界面,界面使用了Unity3D的UI系统进行制作,在

38、hierarchy 视图中右键会弹出选择选项,选择里面的UI选项,再选择Canvas画布选项,这样就可以新建一个画布组件,我们就可以在上面挂载各种各样的组件,例如Text文本、Image图片、Button按钮、Slider滑动条、Toggle选择框,在本页面我使用了图像组件设置了整个开始界面的背景图,用文本组件设置了游戏名,然后用三个按钮设置了几个点击事件,开始界面如图4-1所示,对应的点击事件如下:Start按钮:用于进入游戏加载场景。当玩家使用鼠标选择点击此按钮时就会跳转到游戏加载场景。按钮会用不同的颜色变化来提示玩家目前在把鼠标移动到按钮上方或者正在点击按钮。Setting按钮:用于打开

39、游戏设置界面。设置界面会在点击设置按钮后在摄像机前显示,并发出弹出窗口的提示音。玩家可以在设置界面修改特效声音和查看设置操作方式等设置选项。 Quit按钮:用于退出游戏。点击此按钮则停止游戏并关闭游戏窗口。点击事件基本都是由自己编写脚本后然后通过一系列操作挂载到按钮上,这样才能在点击按钮的时候触发相对应的点击事件。具体挂载脚本的操作就是先在游戏场景中右键添加一个空对象Create Empty,这时hierarchy 视图中默认会在最后一个游戏对象后面添加对象,点击空对象让空对象的属性信息出现在inspector 视图中。在inspector 视图中有一个Add Component按钮,这个按钮

40、就是为对象添加组件或者脚本的按钮。点击Add Component,在弹出的选项框中搜索选择自己刚刚编写好的脚本,这样就可以在空对象上挂载自己编写的脚本了,然后把空对象挂载到按钮上的点击事件,这样就可以在点击事件中选择点击后触发的事件。在开始按钮挂载脚本添加点击事件后会如图4-2所示。图4-1 游戏开始场景 4-3 Button添加点击事件示意图4.1.2 设置场景点击设置按钮会打开游戏设置界面,制作设置界面需要创建在Canvas层级下创建一个Panel组件,命名为Setting,然后再在Setting下创建Text文本内容、Toggle选择框、Slider滑动条、Button按钮,在文本内容添

41、加操作方式说明,然后再选择框挂载脚本这样就可以控制音效播放,在滑动条挂载脚本用于控制音效声量,然后再设置界面右上方添加设置窗口关闭按钮,在右下方添加应用按钮,然后再这两个按钮上挂载脚本添加点击事件,这样我们可以设置完后,直接点击关闭窗口按钮就会不保存修改后的设置然后将设置界面隐藏,如果想要应用设置就右下角的应用按钮,然后设置界面会在保存设置后隐藏。设置界面如图4-3所示。4-3 设置界面示意图4.2 加载界面加载界面是指在进入正式游戏界面前的过渡场景,可以让玩家不会进入游戏界面后因为游戏场景正在加载而卡顿在原地无法操作。4.2.1. 加载界面的功能过渡界面的功能是在场景切换的时候,如果游戏场景

42、资源过大,有可能会导致进入游戏场景的时候玩家会在原地等待游戏加载无法操作,这时候就需要加入游戏加载场景。因为游戏主场景的游戏对象比较多,所以只能使用异步加载SceneManager.LocalSceneAsyne()方法,因为如果直接使用SceneManager.LocalScene ()方法加载场景的话会有明显的卡顿现象。用SceneManager.LocalSceneAsyne()方法加载场景,就可以在运行加载场景的同时异步加载游戏场景,这样等加载场景完成的时候就可以跳转到加载好的游戏界面了。跳转场景如图4-4所示。 4.2.2 加载界面的制作与开始场景相似,也是一个UI界面,首先添加Ca

43、nvas画布组件,然后在画布组件层级下添加Panel画板、Text文本内容、Slider滑动条组件。然后一样在hierarchy 视图中创建一个空对象,然后在inspector 视图添加自己刚刚编写好的异步加载场景方法的脚本,这样就可以在空对象上挂载自己编写的脚本了,然后把空对象挂载到按钮上的点击事件,选择对应脚本中的异步加载方法,这样就可以在点击开始游戏按钮后跳到加载场景且异步加载游戏场景了。图4-4 加载界面的示意图4.3 游戏场景玩家可以正式放开手脚去创作玩耍的地方就是本游戏的游戏场景,本沙盒游戏的游戏场景主要是由游戏地形和游戏界面组成。游戏地形是人物角色所处的地方,而游戏界面UI是游戏

44、场景中的UI界面以及游戏菜单UI。4.3.1 游戏界面的功能游戏地形是玩家进行游戏的环境,在本沙盒游戏中玩家可以对地形进行任意的操作,例如破坏、创建。而且因为本游戏地形采用的是随机无限地形生成,所以玩家可以无限采集素材,做出无限大的、属于自己的地形环境。游戏的UI界面包括血量UI、物品栏UI,背包UI和返回菜单UI。物品栏UI的作用是显示玩家可以通过快捷键使用的物品,背包UI是显示玩家目前所拥有的的素材的种类和数量,而且可以通过拖动素材将素材放入物品栏,游戏菜单UI是用于返回开始界面、进行音量控制和查看游戏操作。4.3.2 游戏地形的创建因为游戏地形是用随机无限生成的方法创建的,所以本游戏地形

45、是通过代码进行生成的。无限生成的原理是通过二维柏林噪声函数通过循环生成三维地形,方法是通过给定范围内遍历每个x和z坐标,然后用0到样本的素体voxels填充整个世界,其中样本是在坐标(x,z)处对柏林噪声函数进行采样的结果。因为计算机资源和硬件限制,我不可能在不遇到计算极限的情况下显示无限的世界,所以我只对当前的坐标为中心的范围进行采样。单纯使用柏林噪音函数生成三维地形会显得不够自然,与现实的地形有些差别,所以我将几个不同频率和振幅的柏林噪声函数相加,这样生成的函数可以生成更加符合自然地形的三维地形。这种地形生成方法叫做Octaves倍频分层叠加地形设计。生成的地形示意图如图4-5所示。然后通

46、过给定位置的函数值结果决定给定位置所使用的的素体voxel类型,例如,如果得到的函数值是0.5,则使用水的预制体去填充这一模块,如果是0.7则使用泥土去填充它,这样我们就可以把整个地形用各种预制体填充完整,做出一个真正的有山有水的地形。填充后的地形示意图如图4-6所示。图4-5 地形生成示意图图4-6 用素体填充后的地形示意图4.3.3 游戏界面UI的创建游戏的UI界面包括血量UI,物品栏UI,背包UI和返回菜单UI。血量UI处于物品栏UI的上面一点的位置,显示当前为玩家人物的血量,如果有血量变动,则会调用对应的脚本,让UI会发生相应的变化,例如扣除一颗心的血量时,血量UI就会将从右开始计算的

47、第一颗红心改变成黑心,以代表玩家扣除了一颗心的血量。血量UI示意图如图4-7所示。图4-7 血量UI示意图物品栏UI处于整个游戏窗口的正下方,会显示玩家人物背包中已有的且放入物品栏的素材,可以通过按下相应的快捷键来调用物品栏右下角对应快捷键的素材。物品栏UI的示意图如图4-8所示。图4-8 物品栏UI示意图背包UI位于整个窗口的中心,背包UI默认显示状态是false,当点击打开游戏背包的快捷键时就会将显示状态改成true,这样就可以做出背包UI的打开与关闭。背包UI显示玩家人物在当前世界中获取的素材和素材的数量,当玩家获得某一素材的时候,背包里就会创建素材对应的图标,并计算素材的数量,数量显示在素材图标的右下角。如果玩家想将素材放入物品栏,可以通过使用鼠标拖动素材图标到背包UI最下方的一栏,这样就可以将素材放入物品栏。背包UI的示意图如图4-9所示。图4-9 背包UI的示意图游戏设置UI跟开始界面的UI相似,设置界面需要创建在Canvas层级下创建一个Panel组

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁