电子科技大神博主专访:Unity卡牌游戏开发项目开发

电子科技大神博主专访:Unity卡牌游戏开发项目开发

博主简介:专注于电子技术领域和实践毕业设计项目,提供远程调试部署、代码讲解、文档指导、ppt制作等技术指导。

主要内容:毕业设计(单片机项目、plc、仿真等)、简历模板、学习资料、技术咨询。

文章目录

1. 摘要

进入21世纪,随着社会的快速进步和科学技术的发展,工作和学习的压力越来越大,缓解压力的需求也逐渐增加。 然而,大多数人的时间都是碎片化的,他们需要简单快速的活动来放松身心。 这使得游戏开发被人们所需要。 本项目基于社交需求,开发了一款玩法休闲、新颖的AVG卡牌游戏。

通过对市场需求的分析和对行业现状的研究。 该项目使用Unity引擎进行游戏开发,并使用轻量级的UI消息框架进行UI之间的通信,解决一对多的通信问题。 采用管理器设计模式+原型设计模式,让游戏代码和数据更加干净,更易于控制和管理。 XML标记语言用于读取和存储数据。 该语言的特点是方便、快捷、快捷。使用UGUI构建游戏页面,可视化游戏数据。 UGUI是目前Unity引擎的主流UI组件。 组件本身功能比较成熟,在功能设计上不需要太多考虑。 可以满足大部分显示需求。

经过测试,该项目基本实现了预期的功能,能够体现完整的游戏玩法,展现AVG的特点。 添加Roguelike元素后,游戏不会因为重复体验而感到乏味。 项目本身采用的框架设计模式,大大降低了后续开发和扩展新功能的难度。

2. 简介

现在市场上的游戏类型繁多,玩家对不同类型的游戏有不同的喜好,很难调整喜好。 卡牌游戏是人们总是津津乐道的一类游戏,因为卡牌游戏本身就是一个需要思维过程的游戏过程,并不需要高强度的操作才能完成。 这也符合休闲游戏的特点。

为了满足休闲游戏的特点,让游戏容易上手,而且不重复乏味,需要有足够的游戏环节支撑,卡牌游戏的思维过程,AVG的冒险体验[1] ,并且还加入了Roguelike[2]的元素,保证了游戏的特色,并将其升华。 本项目的核心系统主要分为以下几个部分:

角色模块:角色模块是游戏的基础。 玩家进入游戏后,会选择一个角色,获得该角色的基础卡组。 每个角色对应的基础牌组以及后续收集到的卡牌都会不一样,每个角色的核心玩法都不同,能够给玩家带来不同的体验。

卡牌模块:卡牌游戏是游戏的主要核心部分。 每张卡都有自己的特点。 卡牌将具有各种属性值。 玩家在游戏过程中会获得不同的卡牌,组成自己的卡牌。 牌组中的卡牌是玩家在冒险过程中使用的主要手段。 他们必须充分利用这些卡牌,才能在战斗中取得优势,最终取得胜利。

地图模块:地图模块是Roguelike元素的主要体现。 选择角色后,玩家将获得一张地图。 这张地图中会有各种图标,每个图标代表一种房间类型。 由于路线的不逆行性,玩家应该思考自己需要行驶的路线来决定进入哪个房间,这会影响后续的游戏。

战斗模块:本游戏的战斗采用回合制战斗。 进入可以战斗的房间后,玩家就会遇到敌人。 不同的敌人有不同的行动规则。 敌人角色上方会显示提示。 玩家将在回合开始时相遇。 有对应的行动点,行动点是有限的,行动点与卡上的消费相对应。 玩家应该根据提示来决定本轮要打哪些牌,同时玩家应该思考如何在下一轮开始时获得优势。 战斗中,如果一方先死亡贴图笔刷,则战斗结束。玩家获得此信息后

房间模块:整个地图中会存在不同的房间,不同房间的玩家所经历的事件也不会相同。 在战斗室中,玩家和敌人相遇并开始战斗。 在商店房间中,玩家可以购买相应的卡牌并使用除卡服务。 在宝箱室内,玩家可以直接获得奖励并提升自己。 在休息处,玩家可以选择恢复生命值或者提高卡牌品质来增加战斗力。

本文的整体结构为第一章:相关技术概述,用于介绍游戏开发中使用的框架,以及游戏开发中使用的相关技术; 第二章:游戏系统分析,这部分将讨论对游戏内容的需求进行具体而详细的分析,规划其游戏目标,研究其可行性并分析游戏的需求; 第三章系统设计,总体确定游戏的设计方案、组成游戏系统的模块以及模块之间的关系。 同时需要进行本地数据存储设计,确定各个模块具体如何实现,包括游戏流程设计; 第四章系统实现讲解了游戏的具体实现流程,按顺序演示了核心功能的核心代码,并实现了它们。 解释; 第五章游戏测试地图场景,这部分将介绍项目功能实现完成后如何开展测试工作的测试计划、测试用例、性能测试等。

2.系统分析

系统分析主要分为两部分,功能需求和非功能需求。 本项目主要模块有:角色模块、战斗模块、游戏房间模块、卡牌模块、UI构建模块、场景构建、地图模块。

2.1 用户需求

每天的工作和学习之后,总是需要放松身心。 休闲益智游戏给人们带来简单轻松的快乐。 卡牌游戏是休闲游戏的代表之一。 其中有相当多的游戏流程,取代了高强度的操作,只需要点击就可以带来交互性[17]。 在AVG冒险题材中,玩家将扮演一个角色,并从角色自身的触发器带入游戏,体验游戏世界中发生的一切。 然而卡牌游戏的重复性是一个致命的缺陷,所以如果能够在AVG卡牌中加入一些随机元素,就会让游戏变得不可预测,给人一种特殊的体验。

2.2 功能要求

根据用户需求分析游戏中包含的系统。 主要模块有:角色模块、战斗模块、游戏室模块、卡牌模块、UI构建模块、场景构建、地图模块。

主菜单UI模块:进入游戏后,需要有相应的主菜单。 主菜单需要有基本的游戏风格,显示游戏的标题,以及可操作的游戏界面。 菜单上的文字可以显示相应的功能。 点击后会有相应的显示。 主菜单可以适当装饰。

角色模块:角色模块应显示相应的角色信息,为玩家提供角色选择,为角色添加相应的描述,返回主菜单的按钮和进入游戏的按钮。 角色模块需要相应的数据支持,每个角色都会对应不同的卡片[3]。

卡牌模块:每位玩家选择角色后都会获得一定数量的基础卡牌。 卡片上会有相应的说明。 基本卡分为三种类型,分别是攻击卡和技能卡。 、能力卡,每张卡都会有不同的品质,卡上可以显示相应的功能和消耗。

地图模块:选择角色后,会提供给玩家一张地图,以便玩家进行游戏。 每个地图图标对应不同的房间类型。 玩家只能点击同一楼层的房间。

战斗模块:玩家进入地图后,会出现在游戏场景中。 玩家在左边,敌人在右边。 战斗开始后,玩家将获得指定数量的卡牌。 玩家要根据怪物的动作提示和自身的体力消耗来决定。 打牌了。 直到一方没有剩余生命值时游戏结束。

UI模块:游戏顶部会提示玩家姓名、角色姓名、当前血量和最大血量,可以查看地图,可以查看自己拥有的所有卡牌,以及您可以打开系统设置面板。

场景模块:利用事先准备好的图片素材,将这些图片素材进行拼接。 拼接完成后,添加相应的灯光和相机特效。

3、效果图

该系统是在Windows 10操作系统上使用Unity引擎开发的。 它使用简单易读的json作为数据支撑,通过C#语言完成整个游戏以及游戏的整体。 该系统的特点是游戏性强、功能逻辑复杂。

4.1 开发环境

该系统采用Windows 10企业版64位操作系统,是目前主流的操作系统。 它具有简洁美观的界面、不复杂的操作和良好的运行环境。 本系统的开发环境为CPU Intel® Core™ i5-6300HQ CPU @ 2.30GHz,内存为8GB,硬盘为256G SSD,开发引擎为Unity3D2017.4.20f2; 本项目的代码编写工具是Visual Studio2019。

4.2 开发规范

代码的标准化和一致性提高了团队协作和开发的速度,也提高了开发人员理解代码的清晰度和修改代码的便捷性。 代码的程序结构和命名风格是开发系统时的重要方面,也是决定项目是否立项的关键步骤[23]。 命名方法为大驼峰式命名。 方法以驼峰命名法命名,例如ExampleMethod()。 脚本变量和属性以驼峰命名法命名,例如 myVariable。

4.3 数据存储与读取实现

XML可以被标记为一种存储数据的语言,而System.XML可以用来操作数据。 按照指定路径加载到内存中。 通过API加载所有XML文件信息,遍历节点获取数据,并分类保存[24]。

XML主要以文本和树结构的形式存储数据。 根节点下可以扩展子节点,子节点中存储了子节点的属性。 子节点可以嵌套子节点,卡片特征数据,如属性ID、属性名称、页面渲染时的颜色、属性描述等。XML结果如下所示:

 

  
  
  

卡特征加载过程中,获取XML文件路径,声明存储数据的容器,声明XML文件对象实例,声明XML读取规则对象实例,再使用规则实例读取XML文件对象。 从节点和属性中获取需要保存的数据并存储。

4.4 核心功能实现

图4.1所示为游戏的主菜单界面。 主菜单显示游戏的标题。 标题后面有一个滚动的云,可以重复进行装饰。 该场景作为游戏的初始场景,界面如图4.1所示。 该函数的核心功能如下。 具体参见附录1主菜单实现类。

图4.1 游戏主菜单界面

界面设计主要使用Unity3D引擎的UGUI。 背景中的云彩使用重置 RectTransf 的锚点位置。 利用锚点的重置来实现循环效果。 主要组件有文本组件、图像组件和按钮组件。 为这些组件添加相应的回调方法,以实现各个组件的具体功能。 UI往往是多对一的关系,所以当需要多个回调的时候,可以给这个组件添加care事件,利用care事件来实现多对一,本质上就是指观察者设计模式。 思路详见附录1主菜单实现类。

战斗页面涉及很多模块。 上面是UI模块,下面是抽牌堆、当前手牌、洗牌堆。 中间左边的是玩家角色,右边的是敌人角色。 两个字符的下方,显示的是双方的健康状况。

战斗界面如图4.2所示。 核心代码参见附录2战斗回合管理类。

图4.2 战斗模块界面

进入战斗时,玩家先开始。 玩家将从所有玩家的卡牌中克隆出一副新的卡牌游戏开发玩家遍历,然后将其添加到卡牌抽取堆中。 相应数量的卡牌将从抽卡堆中随机抽取并添加到玩家的卡牌库中。 卡牌组中,也就是画面中间区域显示的卡牌,玩家点击该卡牌后,会出现一个箭头。 这个箭头是使用二阶贝塞尔曲线完成的UI。 箭头所指的物体就是卡片的物体。 箭头变为红色后,该卡即可使用。 玩家使用该卡牌后,会实现该卡牌相应的效果,并从可用的行动点中扣除行动点,然后将使用过的卡牌添加到右下角的弃牌堆中。 玩家点击结束会议后,轮到敌人。 敌人会根据AI的预行动和回合数来决定本轮的行动。 敌方回合结束后,新的回合将重新开始。

商店界面如图4.3所示。 有些卡是商店里随机出售的,还有特殊卡。 右下角是除卡服务,用于除卡。 核心代码如下:

图4.3 商店模块界面

for (int i = 0; i < CardPoints.childCount; i++)
        {
AllCardPoint.Add(CardPoints.GetChild(i).GetComponent());
        }
        for (int i = 0; i < RelicsPoints.childCount; i++)
        {
            AllRelicsPoint.Add(RelicsPoints.GetChild(i).GetComponent());
        }SetPointEnter(RemovePoint.transform.Find("Card").GetComponent(), OnCardRemoveEnter);SetPointExit(RemovePoint.transform.Find("Card").GetComponent(), OnCardRemoveExit);
SetOnClick(RemovePoint.transform.Find("Card").GetComponent(), OnCardRemoveClick); 

总结

通过对Unity游戏引擎脚本编程的了解,完成了游戏整体的设计。 制作游戏确实是一个很大的挑战。 不仅仅是功能实现带来的麻烦,还需要清晰的头脑去思考。 只有采取相应的步骤才能顺利进行,这使得整体发展并没有想象中那么顺利。 早期对整体游戏的规划和思考需要在以后编写代码之前进行更详细的讨论和反复修改。 游戏更加清晰,开发速度提高。

游戏开发不同于软件设计。 游戏开发没有一个整体的框架概念。 因为游戏的灵活性,很多时候死板的应用一个框架是得不偿失的,被框架所束缚。 因此,在开发过程中需要保持灵活性。 条条大路通罗马,也需要在有限的条件下选择最适合项目的框架。 设计模式尤为重要。 各种规模的框架都是基于设计模式的。 设计模式和数据结构在整个游戏框架中尤为重要。 这也将是一个积累的过程。

这个项目完成后,我会继续开发这个项目。 在后续的开发中,将会加入其他的游戏元素。 就项目本身而言游戏开发玩家遍历,还有很多需要优化的地方。 游戏数据可以改为使用Excel表格。 表单以JSON的形式存储在本地。 表的配置更方便,JSON的读取效率更好。 在战斗AI方面,可以引入BehaviorDesigner插件来表达敌人,更好地管理AI的行为。

这次毕业设计让我充分认识到了学习有路、努力才是路的道理,学海无际、努力才是真理。 各行各业想要在行业取得成功,就必须比普通人更加努力。 提高你的技能水平,感受很多。 尽管路途漫长而艰辛,但你仍不断前行。

目录

目录

摘要一

摘要二

简介1

1 相关技术 3

1.1 C#3

1.2 Unity3D 3

1.3UGUI 3

1.4 XML 4

1.5 原型制作模式4

1.6 本章小结4

2 系统分析 5

2.1 用户需求5

2.2 功能要求5

2.3 非功能性需求 6

2.4 本章小结6

3 系统设计 7

3.1 系统应设计 7

3.2 系统详细设计 7

3.2.2 数据逻辑结构设计 10

3.4 UI设计原则11

3.5 本章小结12

4 系统实现 13

4.1 开发环境 13

4.2 开发规范 13

4.3 数据存储与读取实现 13

4.4 核心功能实现 14

4.5 本章小结16

5 系统测试 17

5.1 测试计划 17

5.2 游戏测试17

5.4 本章小结17

结论19

致谢 20

参考文献 21

文章来源:https://blog.csdn.net/weixin_112233/article/details/133591400