位置: 编程技术 - 正文

Unity3D游戏开发之快速打造流行的关卡系统(Unity3D游戏开发标准教程)

编辑:rootadmin

推荐整理分享Unity3D游戏开发之快速打造流行的关卡系统(Unity3D游戏开发标准教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Unity3D游戏开发(第2版)pdf,unity3D游戏开发,Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社,Unity3D游戏开发(第2版)pdf,Unity3D游戏开发标准教程,Unity3D游戏开发标准教程,Unity3D游戏开发(第2版),unity3D游戏开发,内容如对您有帮助,希望把文章链接给更多的朋友!

各位朋友,大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei。 今天想和大家分享的是目前在移动平台上较为流行的关卡系统,关卡系统通常是单机手机游戏如《愤怒的小鸟》、《保卫萝卜》中对游戏内容的组织形式,玩家可通过已解锁的关卡(默认第一关是已解锁的)获取分数进而解锁新的关卡,或者是通过付费购买解锁新的关卡。那么好了,在今天的文章中博主将带领大家快速实现一个可扩展的关卡系统,这个实例的灵感来自博主最近的工作经历,希望对大家学习Unity3D游戏起到一定帮助性的作用。

原理

在本地配置一个Xml文件,在这个文件中定义当前游戏中关卡的相关信息,通过解析该文件并和UI绑定最终实现一个完整的关卡系统。

1、定义关卡

首先我们来定义一个关卡的基本结构:

在这里,我们假定关卡的名称和该关卡在Unity3D中场景名称一致。其中最为重要的一个属性是UnLock,该值是一个布尔型变量,表明该关卡是否解锁,因为在游戏中,只有解锁的场景是可以访问的。

2、定义关卡配置文件

从关卡的基本结构Level可以定义出如下的配置文件,这里使用Xml作为配置文件的存储形式:

和关卡结构定义类似,这里使用0和1来表示关卡的解锁情况,0表示未解锁,1表示解锁,可以注意到默认情况下第一个关卡是解锁的,这符合我们在玩《愤怒的小鸟》这类游戏时的直观感受。那么好了,在完成了关卡的结构定义和配置文件定义后,接下来我们开始思考如何来实现一个关卡系统,因为此处并不涉及到Unity3D场景中的具体逻辑,因此我们在关卡系统中主要的工作就是维护好主界面场景和各个游戏场景的跳转关系,我们可以注意到这里要完成两件事情,即第一要将配置文件中的关卡以一定形式加载到主界面中,并告诉玩家哪些关卡是已解锁的、哪些关卡是未解锁的,当玩家点击不同的关卡时可以得到不同的响应,已解锁的关卡可以访问并进入游戏环节,未解锁的关卡则需要获得更多的分数或者是通过付费来解锁关卡;第二是要对关卡进行编辑,当玩家获得了分数或者是支付一定的费用后可以解锁关卡进入游戏环节。这两点综合起来就是我们需要对关卡的配置文件进行读写,因为我们注意到一个关卡是否解锁仅仅取决于unlock属性,那么好了,明白了这一点后我们来动手编写一个维护关卡的类。

3、编写一个维护关卡的类

这里直接给出代码,因为从严格的意义上来说,这段代码并非我们此刻关注的重点,可能这让大家感到难以适应,因为文章明明就是在教我们实现一个关卡系统,可是此刻博主却说这部分不重要了,请大家稍安勿躁,因为这里有比代码更为深刻的东西。

Unity3D游戏开发之快速打造流行的关卡系统(Unity3D游戏开发标准教程)

这里我们首先将关卡配置文件levels.xml放置在Resources目录下,这是因为我们可以使用Resources.Load()这种方式来加载本地资源,这种方式对于Unity3D来说有着得天独厚的优势: * 它使用相对于Resources目录的相对路径,所以在使用的时候不用考虑是相对路径还是绝对路径的问题 * 它使用名称来查找一个本地资源,所以在使用的时候不用考虑扩展名和文件格式的问题 * 它可以是Unity3D支持的任意类型,从贴图到预制体再到文本文件等等,可以和Unity3D的API完美地结合

说了这么多它的优点,我们自然要痛心疾首地说说它的缺点,它的缺点是什么呢?那就是不支持写入操作,这当然不能责怪Unity3D,因为当Unity3D导出游戏的时候会将Rsources目录下的内容压缩后再导出,我们当然不能要求在一个压缩后的文件里支持写入操作啦,所以我们是时候来总结下Unity3D中资源读写的常见方案了,那么Unity3D中常见的资源读写方案由哪些呢?

1、Resources.Load:只读,当我们的资源不需要更新且对本地存储无容量要求的时候可以采用这种方式 2、AssetBundle:只读,当我们的资源需要更新且对本地存储有容量要求的时候可以采用这种方式 3、WWW:只读,WWW支持http协议和file协议,因此可以WWW来加载一个网络资源或者本地资源 4、PlayerPrefs:可读可写,Unity3D提供的一种的简单的键-值型存储结构,可以用来读写float、int和string三种简单的数据类型,是一种较为松散的数据存储方案 5、序列化和反序列化:可读可写,可以使用Protobuf、序列化为Xml、二进制或者JSON等形式实现资源读写。 6、数据库:可读可写,可以使用MySQL或者SQLite等数据库对数据进行存储实现资源读写。

好了,在了解了Unity3D中资源读写的常见方案后,我们接下来来讨论下Unity3D中的路径问题: 1、Application.dataPath:这个路径是我们经常使用的一个路径,可是我们真的了解这个路径吗?我看这里要打个大大的问号,为什么这么说呢?因为这个路径在不同的平台下是不一样的,从官方API文档中可以了解到这个值依赖于运行的平台: * Unity 编辑器:<工程文件夹的路径>/Assets * Mac:<到播放器应用的路径>/Contents * IOS: <到播放器应用的路径>/

4、编写入口文件

在这段脚本中,我们首先加载了关卡信息,然后将关卡信息和界面元素实现绑定,从而实现一个简单的关卡选择界面,并人为地解锁了第二个关卡。好吧,如果这是一个正式游戏的配置关卡配置文件,相信大家都知道怎么免费玩解锁的关卡了吧,哈哈!当然,我不推荐大家这样做,因为作为一个程序员,当你全身心地投入到一个项目中的时候,你就会明白完成一款软件或者游戏需要投入多少精力,所以大家尽量还是不要想破解或者盗版这些这些事情,毕竟作为开发者可能他的出发点是想做出来一个让大家都喜欢的产品,可是更现实的问题是开发者一样要生活,所以请善待他们吧。好了,言归正传,这里的UI都是基于UGUI实现的,不要问我为什么不用NGUI,因为我就是喜欢UGUI!我们知道我们需要为每个关卡的UI元素绑定一个响应的事件,因此我们需要为其编写一个LevelEvent的脚本:

记得在本文开始的时候,博主提到了一个假设,就是关卡的名称和其对应的游戏名称一致的假设,相信到此处大家都知道为什么了吧!为了让每个关卡的UI元素知道自己对应于哪个关卡,我们设置了一个level变量,这个变量的值在加载关卡的时候已经完成了初始化,所以此时我们可以在这里知道每个关卡的具体信息,从而完成事件的响应。好了,今天的内容就是这样了,我们来看看最终的效果吧!

可以注意到在第二次打开游戏后,第二个关卡已经解锁了,说明我们在最开始设计的两个目标都达到了,那么内容就是这样子啦,如果大家有什么好的想法或者建议,欢迎在文章后面给我留言,谢谢大家!

unity3D 让粒子在UI上播放 接口,参数是粒子和粒子后面的PanelpublicstaticvoidChangeParticleRenderQueue(GameObjectparticle,UIPanelbackPanel){if(particle==null||backPanel==null)return;intparticleRenderQueue=backPanel

unity3d实现LOL中的相机控制功能 usingUnityEngine;usingSystem.Collections;publicclassCameraController:MonoBehaviour{privateintSightDistancespeed=;privateboolCameraIsLock=false;//相机是否锁定privatefloatRectSize=f;//矩形

Unity3D之预设的使用细节【转载】 1.预设怎么取消如下图所示,创建一个普通的立方体对象Cube,Hierarchy视图中名子的颜色是白色的。同样在创建一个Prefabe,你会发现此时立方体对象在Hier

标签: Unity3D游戏开发标准教程

本文链接地址:https://www.jiuchutong.com/biancheng/369334.html 转载请保留说明!

上一篇:[Unity3d]总结两种Color Space(unity3d基础操作)

下一篇:unity3D 让粒子在UI上播放(unity的粒子系统在哪)

  • 纳税等级怎么从M变成B需要什么条件
  • 服务型公司要交多少税
  • 税控盘退费怎么做会计分录
  • 已付工资在资产负债表中体现
  • 如何确定一个企业在网络营销中的目标受众?
  • 消防公司支付劳务费会计处理
  • 小规模纳税人差额征收税率是多少
  • 商业承兑汇票利息什么时候支付
  • 慰问金计入什么明细科目
  • 2019年小规模纳税人增值税优惠
  • 非税项目明细代码
  • 房地产企业所得税汇算清缴
  • 票据遗失可以采取哪些补救措施
  • 转让房地产未完工项目增值税发票如何处理?
  • 免税农产品如何填报企业所得税季报
  • 如何开具红字增值发票
  • 捐赠允诺是否有法律约束力?
  • 旅行社会议主持开场
  • 开餐费发票要开具数量和单价吗
  • 快递公司税收优惠
  • 补发工资申请书格式范本
  • 商品出口消费税计算方法
  • 购车保险属于什么费用
  • win10系统如何在游戏中禁用输入法
  • 鸿蒙3.0系统哪些手机可以升级
  • 财政补贴会计入养老金一起发放吗
  • 生产废料怎么处理会计分录
  • 公司从超市购买东西缴纳印花税吗
  • 本月销售未开票怎么做分录
  • 最小的固态硬盘多大尺寸
  • debian配置
  • 非货币性资产交换补价大于25%的会计处理
  • php自动载入自定义函数文件
  • php代码生成
  • python编程爱心形状
  • 怎么调试vue项目
  • vue路由守卫用法
  • 公司请的临时工
  • 哪些增值税发票不可以抵扣
  • 增值税申报表销项税额怎么算?
  • vue was assigned to but
  • csv文件导入到pycharm时报错
  • 怎么计算多个表格的某一数据
  • mysql查询性能优化
  • 小企业会计准则没有以前年度损益调整科目
  • 管理费用的核算内容主要包括哪些
  • 增值税是指哪些税种
  • 沙石料进项发票
  • 企业所得税季末从业人数
  • 建筑业增值税税负率一览表
  • 财产转让收入属于什么收入
  • 固定资产怎么入费用
  • 多计提的费用可以记收入吗会计分录
  • 收到跨年的发票怎么入账
  • 上年未结转金额是什么意思
  • 该卡已在其他账户中存在什么意思
  • mysql 5.7.16 winx64安装配置方法图文教程
  • Linux系统中uniq命令的基本使用教程
  • winproj.exe - winproj进程是什么意思
  • ios8.4.1完美越狱教程
  • win1020h2正式版
  • xp系统设置共享显存
  • windows10预览版怎么样
  • linux的批处理
  • win10 world文档
  • Linux上PPTP VPN的一键安装以及设置开机启动的方法
  • win7怎样禁用无线网络连接
  • linux的截图工具
  • 原生js有用吗
  • 批处理copy合并文件
  • 深入理解计算机系统
  • js实现时间
  • js判断数据是否存在
  • 请问在javascript程序中
  • go语言websocket
  • 土地交易的印花税
  • 重庆电子税务局官网登录入口
  • 广东省税务总局局长叫什么名
  • 古代怎样征兵
  • 发票多久作废不了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设