【创意菜单】游戏开始菜单模块 月度挑战
liureng 发表于 2018-12-13 04:56:20 801

构思

来源

解决问题

每个游戏都需要一个菜单,制作一个菜单模块,可适用于大多数游戏。制作完成后,欢迎吧友们引用、修改,节省大家的游戏开发时间。

实现构想

效果

等到全部完成时再来做效果

菜单的过渡为从左到右逐渐绘制

项目背景由两张图组成,一张边,一张中间。边绘制在左右,支持上下拉伸,适应项目高度。中间支持上下左右拉伸。

动态背景图

不能用sprite载入播放,增加游戏加载速度、内存占用。只能用不动的背景图,加上动的物体实例在背景图上。

以前的解决方案

总结上次失败的经验:

鼠标和键盘操作同时实现,增加开发复杂度。这次操作用数据契合,先制作键盘操作,因为键盘操作简单,鼠标还要牵扯位置坐标。

上次没想好数据结构就写代码。这次先思考实现的数据结构。

完成挑战,压缩包中已包括:外置素材、文本、ini、独立的执行文件、工程文件 ---- 下载地址: https://pan.baidu.com/s/1QHcZJJ3HDdWBBXWPRU2j5Q 操作: 上W、下S、确定J、取消K
最后于 4月前 被liureng编辑 ,原因:
最新回复 (15)
  • 断水 发表于 2018-12-13 05:36:13
    0 2
    开始写啦 
    期待中...
  • liureng 发表于 2018-12-13 06:28:55
    0 3
    嗯,相互鼓励,共同进步,嘻嘻
  • liureng 发表于 2018-12-14 04:32:15
    0 4

    原型运行想像(能做什么,和环境的互动)

    当鼠标在项目上时,绘制选框。如果有下一级,绘制移动的三角形。确定后显示下一级项目,上一级的三角形、选框不动。右键退回到上一级菜单。

    有设置、成就、CG界面。

    简化、要求(从易到难,扩展时检验结构的修改性)

    先制作菜单,再制作界面

    菜单中的设置、CG、成就,除了在开始房间可以进入。在游戏中也可以进入。所以要单独在一个房间。设置分为画面、声音、控制(集成自定义按键)。进入房间前截屏,绘制为背景。让玩家感觉到是暂停。单独为一个房间,也是模块化编程的需求。

    菜单要求换背景图。为防止出现背景图和字体颜色相同的情况出现,项目也要有背景图。

    不要把每个项目设置成单独的,因为会增加行间距,露出的背景图影响对项目的辨识。所以计算该级项目的总高度、宽度后,绘制一个半透明底色、边框。选中的项目,用其它颜色覆盖绘制文字。

    项目宽高自动计算。

    输入最简,只需输入项目名称。自动获得分辨率。字体大小固定,改变分辨率不会改变字体大小。字体大小可设置。

    为可设置的项目写一个说明,方便以后修改。

    外部导入背景、界面图片,方便以后替换修改

    每级菜单之间用变量数据契合。

    项目内容:制作人、游戏名称、版本、当前账号、账号管理、游戏教程、开始游戏、载入游戏、设置、CG、成就、感谢名单、退出


    最后于 5月前 被liureng编辑 ,原因:
  • 菜鸟lilin 发表于 2018-12-15 01:30:47
    0 5
    支持
  • liureng 发表于 2018-12-15 04:27:12
    0 6

    可行性验证

    背景上写上文字(不方便)

    通过对鼠标点击位置的判断,来改变选择变量的值,从而做出相应动作。

    优点:

    容易理解

    缺点:

    把菜单文字写在背景上,以后不方便添加修改。

    以精灵图片为菜单(不方便)

    1、用一个精灵图的不同子图,表现不同选项的选中状态。用image_index判断选中的选项

    2、用一个精灵图做选框,其余做选项,根据坐标判断选中的选项。

    优点:

    美术效果很好

    缺点:

    添加修改时,改动太大。不方便

    在绘制事件中,用代码绘制文字(采用)

    方便调整大小,添加项目


  • liureng 发表于 2018-12-16 03:51:03
    0 7


    逻辑层

    使用流程想像(要做什么事)

    当用户在没有子项的项目上,点击左键后,得到一个数据。根据这个数据在结束步执行对应的操作。用show_message()来表示执行。

    使用场景想像(怎么做)

    操作

    鼠标、键盘

    文字绘制

    像骑马与砍杀一样,从左到右,居中绘制。

    绘制方式

    采用自动绘制

    UI

    成就绘制正方形的框,内部写成就1、成就2

    CG绘制长方形的框

    设置:画面、音乐、按键

    视角

    启用视角。大小与窗口、显示器分辨率相关。

    房间大小

    3840 * 2160

    其它工程设置

    资源加载

    指定固定路径 working_directroy

    图片

    按背景加载

    文字

    大小一样,用颜色来区分

    房间

    菜单房间(视野)、运行房间(视野)、设置房间(没有视野,进入前设置大小)

    运行房间有会左右贯穿移动的实例,方便截屏。

  • liureng 发表于 2018-12-17 04:30:10
    0 8


    数据层

    数据结构

    目录树

    理论

    目录树都由若干节点组成,每个节点都有自己的节点编号-DID,父节点编号-PID,以及节点文本这三个最基本的属性,其他都属于扩展属性

    画数据转换图

    实现

    用一个列表储存每级目录的名称

    用一个列表储存每个名称是否有子目录,有的话子目录名称在下一级目录的开始位置。结束位置是当前选择项目的下一个项目的开始位置,并且要跳过没有子目录的项目。在最后一个项目的结束位置计算时,列表会越界返回0。如果为0,结束位置就是下一级目录名称列表的大小 1

    为了减少对根目录的判断赋值,设计为有根树。即在游戏菜单上方,再设置一个只有一个项目的目录。

    数据结构验证

    用最简单的方式绘制一个没有规则的目录

    键盘操作:上、下、确定、取消

    写流程表

    逻辑项目》细分模块


  • liureng 发表于 2018-12-19 03:42:22
    0 9

    制作

    代入实际菜单字符

    对代码进行自动计算优化

    不固定参数函数,增加列表项。失败,最多支持16个参数。

    在开始时,添加设置说明

    绘制改为居中绘制

    绘制会动的三角形

    没有选中当前菜单时,三角形会动,选中后不动

    选中的项目,用其它颜色覆盖绘制文字

    第二次迭代

    绘制颜色设置

    没有重复的代码,有重复就制作成脚本。

    操作数据契合,绘制数据的生成在绘制事件中。

    检测逻辑流程。

  • liureng 发表于 2018-12-20 03:58:36
    0 10

    实现各种功能

    需要一个按下确定后检测的变量。

    方法一:

    每级菜单用一个变量储存选择的项目,检测时再把它合起来。

    方法二:

    用一个固定长度的数字来实现对项目的识别。

    1级、2级、3级

    1~99、100~9900、10000~990000

    方法三:采用

    用已有的ChoosePOS数组来检测选中项目。好处是检测时菜单结构清晰,与方法二相比检测时间短。

    先制作外部载入文本,因为设置等与之相关。

    菜单项目TXT导入

    第一行说明

    第二行菜单级数

    对应级别菜单项目的最大位置

    一行字符,项目字符

    一行数字,储存子菜单项目在下一级菜单中的开始位置

  • liureng 发表于 2018-12-22 04:35:21
    0 11

    账号ini导入

    [账号] 0=3;账号数量 1=玩家1 2=玩家2 3=玩家3 为切换账号,建立子菜单 把账号添加进3级菜单lbProjectSTR[3]的最后面,方便自动绘制 选定子菜单中的账号,替换当前账号,载入选定账号资料(省略)。注意此处用的是指定替换字符"账号"。switch用的是default,因为不知道会建立多少账号

    重命名账号

    重命名当前账号,弹出输入框 检测重名 改写ini 替换lbProjectSTR[1]和lbProjectSTR[3]绘制字符

    新建账号

    弹出输入框 检测重名 改写ini。添加账号字符、账号信息 添加lbProjectSTR[3]绘制字符

    删除账号

    账号数量大于1才能删除 删除选择账号,用脚本把czChoosePOS[czMenuLV]换算为第几个账号 检测不能删除当前使用的账号 删除lbProjectSTR[3]绘制字符,删除子菜单和切换子菜单 数据刷新,退回到上一个级别的菜单 改写ini。删除ini的账号字符和资料。替换账号数量。采用GM的object命名方式,储存一个最大账号编号。删除object,新创建的object的index继续向后命名。 改变删除的子菜单开始位置

  • 断水 发表于 2019-01-03 03:16:28
    0 12
    +2
    一个菜单功能功能
  • 不动king 发表于 2019-01-03 07:20:35
    0 13
    +3
    中规中矩的菜单,有一些设置项目,写了详细的制作日志,赞。
    既然难得用上仙剑五的图片,把字体换成楷体会舒服,无论是图片、BGM还是字体,统一协调也是要就好好琢磨的。
    要是有点特效动画再配上中华风BGM就更好了。
    最后于 4月前 被不动king编辑 ,原因:
  • 顺子 发表于 2019-01-04 04:12:10
    0 14
    +3
    作为菜单而言是及格的,完整的开发日志好评
  • 天使的糖豆 发表于 2019-01-05 02:48:00
    0 15
    糖豆评分:+3

    完整菜单:+1
    更多功能:+1(多级、很多项并不是摆设)
    内容外置:+1
    剩余可以+2的地方是,退出一次以后玩家名字不会保留的BUG;有多个选项提示了相同的“这个选项仅是测试占位”内容,明明只有一个是“设置”剩下的都是别的选项;素材稍微臃肿了,明明只是看一下菜单却要一下占满全屏。
  • 礼程 发表于 2019-01-05 08:55:55
    1 16
    很细致的开发日志,对于功能的实现追求很高。
    虽然形式比较简陋,但可以看得出来作者是脚踏实地奔着实用开发去的。
    +3