文章目录
- 得分界面修改
- 数据显示
- 数据记录
- 资源
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击(一)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件(二)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-飞船动画(三)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-滚动背景(四)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌人配置(五)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-碰撞框和受伤区域(六)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-受伤 爆炸 销毁组件(七)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌人生成器(八)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-标题菜单及游戏结束界面(九)
使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-基础得分系统(十)
整体开发还是基于组件的思维。相比于工厂模式或者状态机,可能有些老套,但是更容易理解和编程
教程大概是2个小时 基本上一个小时就能有游戏的雏形。
不过由于都是初学者,所以大概整体是应该4个小时左右。
本篇文章实现最高分和数据记录,约15分钟
得分界面修改
首先切换到游戏结束界面,现在已经有两个标签GameOverLabel,GameOverLabel
我们需要制作成有得分的标签,如同下图这样
大概率能看出来需要在VBoxContainer增加两个标签, 然后还需要调整位置和距离
新建两个容器HBoxContainer插入其中,更改名称ScoreHBoxContainer和HighscoreBoxContainer
然后添加分数标签和值
设置内容,更改字体。这个和之前类似。使用已经有的default
现在需要让他们占据更大的空间。需要将得分标签填满整个标签行
设置标签检查器属性 layout – container sizing -设置扩展,能够看到分数占据了剩余的行空间
复制这两个标签到另一个HBoxContainer中,作为高分设置,如图所示,记得更改text文本
然后能够注意到press “space” to Return to the Start Menu文字离分数太近了
需要在VBoxContainer更改间隔,通过更改检查器属性Separtion
但是这样有个问题,主要就是所有间隔都修改了,因此可能需要添加控制节点来控制间隔
通过添加一个用户节点,实际上是个空节点,然后设置属性为32px,于是能够看到有一个32px的固定间隔被设置
这种做法是一种比较简单的方法,实际上就是用一个节点做空间分隔
实际上有很多更加简单的方法,不过暂时先这样设置
接下来需要设置这些ui的路径,将这些可能常修改的ui设置唯一名称,防止移动位置后代码运行异常
如ScoreValue和HighScoreValue
数据显示
首先ctrl初始化两个分数值
还需要访问游戏统计数据,因此需要访问game_stats ,声明并且设置检查器属性为game_stats
添加代码
具体逻辑十分简单,就是判断分数是不是最高分,如果是最高分,赋值
然后将分数传递显示到text窗口中
记住ready中还需要清零分数
这样运行后分数就能显示了,但是高分的记录存在问题,即使分数低也会被记录为高分,这是由于资源管理没有设置导致的,需要设置game_stats资源。因为game_stats只要切换没有这个资源的场景。就会释放节点。因此保存消失
数据记录
因此我们需要设置一个脚本或者全局变量,将高分存储下来,
新建一个脚本,保存为resource_stash,这个脚本的任务是加载游戏统计信息,脚本代码如下
代码逻辑是加载游戏状态信息
在项目设置-自动加载中,选择这个脚本设置为自动加载
这样再运行,高分保存就正常了,可以多次运行游戏死亡测试
godot核心是需要将关键数据不进行释放。一直维持在内存中,这样就能记录最高分。
godot只记录资源的修改,修改后务必不能释放,
如果资源不被任何部分引用,godot就会抹去对其资源的所有改动。
因此需要保存关键资源
这不是最优的方式,你其实可以查找更好的方式。
资源
https://download.csdn.net/download/watch361/89541450