位置: 编程技术 - 正文

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的粒子系统在哪)

  • 未取得房屋产权证租赁
  • 财产行为税包括资源税吗
  • 税捷财税官网
  • 缴纳上月附加税会计科目
  • 月末只有进项税需要把转出未交增值税转到未交增值税
  • 2019年所得税季度增值税怎么报
  • 委托收款结算方式流程图
  • 增值税进项税额转出的账务处理
  • 现金流量表关注指标
  • 房地产行业增值税筹划
  • 工会经费向地方税务局缴纳的比例是多少
  • 水利建设专项收入税
  • 公司修理电脑属于什么费用
  • 未分配利润转入本年利润
  • 如何判断发票是否重复
  • 长期股权投资损失计入什么科目
  • 当年的成本发票必须当年结算吗
  • 应交税费留底增值税
  • 物流公司运费账务处理
  • 固定资产可以一次折旧完吗
  • 汇算清缴补交的所得税会计分录
  • 怎么做增值税
  • 其他债权投资有哪些明细科目
  • 金税四期查到了怎么办
  • 小微企业可以享受六税两费吗
  • 初级会计中应收账款贴现
  • 月末增值税计算公式
  • 员工工伤保险报销条件
  • 公司未经营需要做所得税年度清缴吗
  • 应收账款的主要功能包括哪些
  • 辅助生产成本是
  • 厄勒布鲁赛程500
  • 国有企业融资方案比较
  • uniapp传值
  • php echo语句
  • Laravel5中Cookie的使用详解
  • 个税收入额是什么意思
  • php的mysql_query
  • 补差价如何做账
  • php微信公众号消息推送
  • 失控发票成本转出怎么做账
  • gpib-usb驱动
  • 判断文件是否存在,存在则删除
  • 决算报表属于会计账簿吗
  • 公墓造价成本
  • 挂靠的项目如何做账?
  • 保理公司的钱来自哪里
  • 企业职工福利费使用范围和标准
  • 企业收到的政府部门工作经费
  • 职工社会保险费是什么意思
  • 营改增后建筑业怎么开票
  • 总结哪些纳税人可以采用简易计税方法
  • 出口企业样品收入分录
  • 企业因受疫情影响导致停工停产的
  • 土地价款抵减销项税
  • 固定资产折旧方法不考虑净残值
  • 小规模季报成功后怎么缴费
  • 发票的抵扣期限是多少天
  • 手续费和利息费用的区别
  • 注销基本户必须注销专户吗
  • 居间费用超过30%违法吗
  • 营业利润率公式计算公式
  • 建立索引mysql
  • mysql7.x单独安装mysql的方法
  • Mac如何开启sip
  • linux挂载yum
  • win7开机自动弹出注册表编辑器怎么办
  • win8怎么改系统
  • 在linux中使用apache发布web服务时默认web站点
  • win8电脑键盘全部失灵怎么办
  • linux diff命令详解
  • Bullet(Cocos2dx)之交叉编译Android,集成到cocos2dx3.x
  • NGUI之UITab Bar的不能将Sprite与SelectedSprite设置成相同的精灵
  • Python爬取qq music中的音乐url及批量下载
  • angular 创建项目
  • jquery中给指定元素添加样式
  • jquery中有几种方法可以来设置和获取样式
  • [推荐]抖音上那些好看的视频和有才的帐号
  • 税控盘状态
  • 商场销售高档化妆品需要缴纳消费税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设