第四节 排行榜、成就系统
众所周知,Gandi 编辑器自带排行榜、成就系统功能。点击 Gandi 编辑器的左侧的两个按钮,即可进入相应的功能:
成就、排行榜系统的用法非常简单,动手尝试一下就会了。如果遇到哪里不懂,可以参考下面的两个文章:
- 排行榜系统教程:https://learn.ccw.site/post/0c226c38-5bdb-4131-b32a-d8eac99e6f49
- 成就系统教程:https://learn.ccw.site/post/da31791b-7730-4f8c-8170-143ae85ffa58
下面,结合具体的作品,我们来看看成就、排行榜系统如何使用。
创建排行榜
- 首先点击左侧的排行榜按钮,创建一个排行榜:
- 要在作品使用排行榜、成就系统,还需要安装对应的扩展:
- 在主菜单,添加成就、排行榜按钮:
点击按钮后,显示排行榜/成就:(显示的同时,可以选择是否暂停作品)
排行榜的使用
下面,假设我们创建的排行榜是“最速通关榜”:记录最快通关时间。排行榜按升序排列。
- 在开始关卡时,记录游戏开始时间:
即从二零零零年到现在的天数(返回的天数是一个小数,例如 8698.711 天)这个积木的主要作用,就是作为时间戳(即记录某一个时间点)。例如,记录开始的时间点、结束的时间点,然后就可以求出时间差。
在前面的教程中,你可能经常见到下面的写法,这其实就是一种把计时器当成时间戳的用法:记录开始时间,然后用“计时器-开始时间”,得到的就是时间差:
同样的,也可以使用“2000年至今天数”作为时间戳,求出时间差。只不过要将天数转为秒数(1 天 = 24 小时,1 小时 = 3600 秒,因此 1 天 = 24 * 3600 秒):
- 记录了“关卡开始时间”后,关卡结束时,我们就可以用下面的积木求出关卡用时(秒)
编写下面积木,用于保存当前关卡用时。
在每个关卡结束时,都添加该积木:
- 当玩家通过 BOSS 关时,统计各个关卡总用时,加入排行榜:
这样,我们就完成了“最速通关排行榜”的制作!
成就系统的使用
我们可以给游戏设计几个成就,并制作相应的图标:
- 墨镜终结者:击杀 100 个敌人;
- 战地工程师:建造一个炮台;
- 神狙手:使用狙击步枪击杀 20 个敌人;
- 坦克杀手:击毁 10 辆坦克;
- 终章:击败 BOSS 无畏者机器人。
同时,可以设计一些彩蛋成就(在获得之前,不会在成就列表显示它的获得条件):
- 你给路达哟:在贩卖机中,速度等级升到最高;
- 因为怕痛全点防御力:在贩卖机中,防御力等级升到最高;
- 墨镜终结者:击杀 100 个敌人:
- 添加一个用户数据:杀敌数。开始时初始化为 0。
- 每击杀一个敌人,杀敌数 + 1。杀敌数 > 99 时,获得成就。
可以给成就设置额外描述,来显示完成进度(当额外描述设置形如为 xx/xx 时,会自动展示为进度)
- 战地工程师:建造一个炮台
- 神狙手:使用狙击步枪击杀 20 个敌人。要实现这个成就,需要解决一个问题:如何判断敌人是被玩家的什么武器击杀的,并进行统计。
- 可以给下面的自制积木添加一个选项,记录造成伤害的武器:
- 玩家近战武器,攻击时记录武器名:
- 玩家远程武器,开火时,给子弹传入使用的武器:
子弹伤害敌人时,记录子弹对应的武器:
这样,敌人死亡时,就能知道是否是玩家击杀的,以及使用的武器是什么,将对应武器的杀敌数+1。
- 坦克杀手:击毁 10 辆坦克;
- 终章:击败 BOSS 无畏者机器人。
- 你给路达哟:在贩卖机中,速度等级升到最高;
因为怕痛全点防御力:在贩卖机中,防御力等级升到最高;
这样,我们就完成了成就、排行榜的制作!
注意事项
- 目前一个作品暂时只支持创建一个排行榜。
- 如果将作品下载下来,再上传到另一个新作品,成就、排行榜并不会跟随过来,需要另外手动创建。
- 避免频繁地设置成就、排行榜数据。应该只在需要的时候上传,或者间隔一定时间再上传,避免对服务器增加压力。
- 在编辑页,已获得的成就,再次运行“获得成就”积木,仍会弹出提示(为了方便编辑页测试)。作品详情页则不会有这个问题。
上一节:03 BOSS 战
下一节:05 小结
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG303/Arkos/Lec7/05&type=comment"
title="{射击课高级篇-第七课-05}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>