动作卡牌游戏-系统设计-场景和UI系统

熟悉coco2dx的人,可能都知道在引擎内部提供CCScene类,这是一个场景概念的类,而cocos2dx本身提供了切换场景的方法。

CCScene t_scene;

CCDirector::sharedDirector()->runWithScene(t_scene);

其实,我们要做而非去怎么改引擎。而是在引擎外部进行封装。抽象出各个系统,然后通过各个系统中调用引擎的功能,来实现我们的需求。

需求: 要实现一个场景,场景是动态的,上面漂浮着各种各样的小岛,场景当中有飞鸟,流水。上面有一层GUI 上面有很多按钮,比如背包,任务等。

分析:

  “场景设计规则”

  一种是在游戏当中切场景,比如A,B两个场景切换,如果当前显示A场景,则B场景的资源需要从内存中移除。如果是当前是B场景,A场景中的资源需要从内存中移除。从理论上来讲,内存的峰值能改出现在你最复杂的场景中。可能在切场景的过程中,需要做loading,时间上有损耗。

  另一种是单一场景,我们需要做的就是不停的换UI。

  由于我们需要做战斗场景,所以,我们采取了第一种切场景的方式,规划了2个场景。一个是主场景,一个是战斗场景,进入战斗过程中需要做Loading来加载战斗资源。然后主场景的部分资源做了cash,来保证从战斗退出后,能快速的切换到主场景。

  “UI设计规则”

  在战斗场景和主场景中,我们的UI显示完全不一样。所以,我们决定UI跟场景走。由于场景就两种,所以就手动写死在程序中指定的场景加载指定的UI。如果设计到多场景模式的情况,比如3D客户端游戏,UI其实就与场景无关了,除非做特殊需求。其实,到最后我们的UI模块和场景模块也是分开。只不过是在切换场景的过程当中,将指定的UI挂到场景的某一层上。2D游戏当中比较常见的操作就是一个UI弹出另一个UI,一个UI切换到另一个UI,一个UI返回上一个UI。

  根据常用的规则我们将UI的操作方式主要设定三个规则,

  一种叫做UI弹出关闭规则(popUp,popDown),它来实现在某一个界面弹出任意界面,然后在弹出后,不许关闭此界面,比如战斗胜利后,你必须点确定才能推出当前弹出窗口。有点类似Windows程序设计中的模式对话框。

  一种叫做UI进入退出规则(entry,back),它主要用来界面的切换,例如界面A->界面B->界面C 一层层进入,然后界面C->界面B->界面A 一层层退出。它的内部实现就是一个栈,后进先出,先进后出。

  一种清空UI规则,就是清空栈,强制返回主界面。

  “场景层次划分”

  对于一个场景,我们目前根据需求分了4个层次,就是CCScene上面挂了4个CCLayer 并设置了ZOrder的先后关系,一个叫背景层,中间层,UI层,前UI层。背景层就是底图,比如蓝天白云,中间层就是漂浮的小岛,UI层就是UI要挂载这个上面。前UI层是在战斗过程中某些特效需要覆盖在战斗UI中,所以增加了这么一层。否则,在整个框架下,我们的UI会覆盖所有东西。

时间: 2024-10-25 20:48:03

动作卡牌游戏-系统设计-场景和UI系统的相关文章

动作卡牌游戏-系统设计-总体设计规划

一个软件项目的最高级别的抽象 初始化: init() 主循环: while(1) { 逻辑更新 图像更新 //帧率 } 结束: destroy() 以上是最高层次的抽象,那么什么东西是逻辑,什么东西是图像.内存控制,帧率控制.这些都如何做到的呢.其实不难,随着分享的深入,其实我们才会慢慢的涉及到这些底层的问题. 很显然,在这个死循环中,执行的代码量越少,效率越高.这是一个基本的道理. 我们姑且把一款游戏的代码分成2部分,一部分在主循环内部,一部分在主循环外部.然后我们尽量在主循环内部放入简单高效

CocosStdio 项目孵化记-动作卡牌游戏-系统设计-UI系统

根据解决方案,我们的UI是用Cocostdio的UI编辑器做的,在通过UI编辑器导出的资源是(.json文件 + 碎图). 这样,会出来一个JSON文件 ,例如A.json,然后一堆碎图.为什么不使用大图呢!因为,我们打算Texturepacker对碎图进行打包,来做资源优化. 这样拼接界面的事,就可以有策划或者美术或者其他人做了.程序可以安心的写代码了,只需要做某些特殊功能的时候,让拼界面的人员给制定的控件做好命名.然后程序根据这些命名写程序就OK了. 其实我们更关注的是如何把这些界面有规律的

菜鸟教程 | egret EUI卡牌游戏制作

写在前面 随着越来越多的新人开始接触白鹭引擎,创作属于自己的游戏.考虑到初学者会遇到的一些实际操作问题,我们近期整理推出<菜鸟教程>系列的文档,以便更好的让这些开打着们快速上手,Egret大神们可以忽略此类内容.本文作者是我们技术支持部门的同事"熊猫少女".看文的小伙伴如果有问题可以来白鹭官方论坛与之交流. EUI是一套基于Egret核心显示列表的UI扩展库,它封装了大量的常用UI组件,能够满足大部分的交互界面需求,即使更加复杂的组件需求,您也可以基于EUI已有组件进行组合

TCG卡牌游戏研究:《炉石战记:魔兽英雄传》所做的改变

转自:http://www.gameres.com/665306.html TCG演进史 说到卡牌游戏,大家会联想到什么呢? 是历史悠久的扑克牌.风靡全球的<MTG 魔法风云会>与<游戏王>.结合数位与现实的<三国志大战>.或是在手机上掀起收集热潮的<龙族拼图>和<百万亚瑟王>? 卡牌游戏这个统称,其内容可以跟各式各样的玩法结合,而暴风雪新推出的<炉石战记>(以下简称炉石)所选择的玩法,是让玩家自行组牌.进行对战的「集换式卡牌游戏」(

卡牌游戏

卡牌游戏 个人信息:就读于燕大本科软件工程专业 目前大三; 本人博客:google搜索"cqs_2012"即可; 个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献; 编程语言:C++ 和 java ; 编程坏境:Windows 7 专业版 x64; 编程工具:vs2008; 制图工具:office 2010 powerpoint; 硬件信息:7G-3 笔记本; 真言 敢于承认不足,敢于去接触和学习,同时又沉稳而镇静 题目 百练 1003 How far can y

计蒜客 16877 卡牌游戏

题目链接:https://nanti.jisuanke.com/t/16877 题目大意:桌子上有N堆牌,每堆牌有Si张,每张牌上有个数.小明和小红玩游戏,小红女士优先,每次从任意一个牌堆顶部取出一张,小明长得丑,每次从任意一个牌堆底部取一张.假设他俩都按照最优的方式取牌,那么谁最后得到的所有牌的数字的和大. 解题思路:首先我们考虑牌个数为偶数的几堆,那么你会发现,无论小红选哪儿个,小明只要跟着她选对应牌堆底部的,那么他俩总会各选顶部或底部一半牌,而且无论谁先手都是一样,显然这样也是最优的(我不

【BZOJ3191】【JLOI2013】卡牌游戏 [DP]

卡牌游戏 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏.然后卡片将会被放回卡牌堆里并重新洗牌.被处决的人按顺时针的下一个

[JLOI2013]卡牌游戏 概率DP

[JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i\)个人时,从庄家数第\(j\)个人的胜率.又因为此时终态确定\(f[1][1]=1\)(只有一个人时那个人胜率为100%),所以倒推回去. 转移时,枚举抽到的牌,算出从庄家数第\(t\)个会出局,那么下一局庄家就是第\(t+1\)个,当前局第\(j\)个就是下一局的第\(j-t(t< j)\)或\

JAVA面向对象编程课程设计——UNO卡牌游戏

一.团队介绍 团队名称:吉祥三宝 成员名称 任务分配 个人博客连接 赖慧颖(组长) 嘤 UNO卡牌游戏-个人博客 黄雅静 嘤 UNO卡牌游戏-个人博客 杨鸿漾 嘤 UNO卡牌游戏-个人博客 二.项目Git地址 UNO卡牌游戏 三.项目git提交记录截图 四.前期调查 五.项目功能架构图.主要功能流程图 六.面向对象设计包图.类图 七.项目运行截图或屏幕录制 八.项目关键代码 九.项目代码扫描结果及改正 十.项目总结 原文地址:https://www.cnblogs.com/yhy949/p/12