下载 App

【个人案例分享】动态注册事件与创建触发器

2025/02/19536 浏览案例分享

废话阶段:

一般我们刚接触星火的时候,使用触发编辑器里的触发器都是直接通过新建触发器来创建,然后往里面添加预先设置好的事件。
TapTap
通常创建触发器与事件的方式
虽然能做出游戏,但这样子的触发器是全局的,后面想添加新的玩法或者内容可能会因为之前的全局触发器导致影响后面的新玩法或者内容。可能会有人想到用打开/关闭触发器或者移除触发器来控制,但这样子仍然不是很方便,所以有没有什么方法可以让某个触发器在必要的时候出现,不必要的时候不在。所以我找到了星火提供的一个方法:从函数创建触发器。

一、动态添加事件

首先需要了解的是动态添加事件。
虽然创建了触发器,但是没有事件触发器就不会执行,而星火也提供了给触发器添加事件这样子的方法,可以让我们在程序执行过程中给某个触发器添加事件,可以通过这种方式也可以实现触发器在必要的时候使用,不必要的时候不用的情况。
假设我要自己做一个功能,需要在消灭30个任意单位后出现BOSS单位,那么就可以通过这种方式来给触发器添加单位死亡的事件,然后记录单位死亡的数量,数量达到后就创建BOSS单位。
首先我们创建一个触发器,这个触发器用来处理单位死亡,然后我们需要添加一个单位死亡的事件,但是要把事件注释掉,这里是为了方便拿到事件里面的参数。
TapTap
添加一个处理单位死亡的动作
然后我们就简单处理一下单位死亡召唤BOSS的功能,这里用一个变量来记录单位死亡的数量,然后在这个触发器里面统计数量,在数量达到10之后,就在地图上创建BOSS单位。
TapTap
用来创建BOSS的触发器
然后我们做一个创建小怪的触发器,同时这里需要给上面的触发器添加事件,并且死亡的单位需要具体到这个创建单位的实例,这样子每次创建小怪的时候,这个触发器都会多一个单位死亡的事件(触发器可以拥有多个事件)
TapTap
用来创建小怪的触发器
TapTap
这样子的预期效果就是我们每次按下Q键都会创建小怪,同时给触发器添加事件,每次小怪死亡都会触发事件,然后记录死亡数量并判断是否召唤BOSS。效果如视频演示:
video-4762034
TapTap
悄咪咪创建了BOSS单位
可以看到击杀完野猪后创建了另外一个单位。说明动态添加事件是成功的

二、动态创建触发器

上面说了给触发器动态添加事件,那接下来就该了解一下动态创建触发器(从函数创建触发器),也是这个帖子的主要内容。
从函数创建触发器可以让某些触发器只在某个阶段产生,例如我做了一个闯关类的游戏,每个关卡有不同的机关以及不同的功能,那么我每个关卡可能就有不同的触发器与事件,如果我按照正常做法去创建全局触发器,那么不同关卡的触发器可能会互相影响从而出现难以控制的BUG。
所以就需要在进入关卡后才创建触发器,同时添加事件。
这里用上面的功能来演示从函数创建触发器的用法:
1. 创建一个全局触发器,为了模拟进入关卡需要触发的动作,这里用游戏开始时(事件)来模拟进入关卡时触发的事件。
TapTap
创建一个全局触发器
2. 在这个全局触发器里动态创建触发器,记录单位死亡一定数量后创建BOSS单位(模拟上面的例子)。
3. 在这个全局触发器里动态创建第二个触发器,然后添加按下按键的事件(模拟上面的例子),按下按键后创建怪物,同时给第一个触发器添加事件

创建第一个触发器(记录单位死亡),记录单位死亡后创建BOSS单位

TapTap
使用从函数创建触发器的方法
从函数创建触发器需要的参数(图里的空值)是一个函数变量,这里直接用星火提供的匿名函数:
TapTap
TapTap
这样子就创建了一个触发器,然后触发器需要拿到事件里的参数。这里需要给函数添加两个参数,第一个参数的类型是任意,第二个是简单表<字符串,任意>这两个参数必须设置,第一个是参数是this:void,这里不用去管他是什么意思(因为能用就行),而且也用不上,第二个才是我们需要用的,也就是事件的参数,如下图所示:
TapTap
添加两个参数
这样子就创建好一个触发器,后面只需要给这个触发器添加事件,然后从事件参数里拿到事件传来的参数就可以执行动作了。那么怎么知道事件参数里的key值呢?
我们需要在触发编辑器的左下角勾选显示依赖库
TapTap
例如这里我们需要拿到单位死亡的事件,那么就在上面的搜索框搜索“死亡”,找到单位-死亡的事件
TapTap
这里我们可以看到事件参数的Key值分别代表什么东西,例如死亡单位是unit,杀手单位是killer。
TapTap
如果我们需要用到这些事件参数,那么就直接从简单表里获取,并输入对应的key就可以了(不过本次的例子用不上,所以就直接打印
TapTap
然后用与刚刚相同的动作,记录单位死亡数量,同时判断死亡数量是否能够创建BOSS单位,这里为了方便区分,把触发器的变量名改成与刚刚上面的例子相同的名字(把第一个触发器的变量名改成记录单位死亡)
TapTap
第一个触发器的完整图片

创建第二个触发器(按下按键创建怪物),用来创建小怪

按照与第一个触发器相同的方式,我们直接不废话,创建第二个触发器:
TapTap
TapTap
这样子第二个触发器也创建好了,同时也给第一个触发器添加了事件,到这还没结束,我们也需要给第二个触发器添加事件:
TapTap
这样子就完成了,演示效果如下:
video-4762144
上面忘记移除触发器,所以创建了两次BOSS单位,但也证明这个触发器是可行的,同时也能看到下面打印了死亡单位与杀手单位。
这种方法结合,可以将功能与功能所需要的触发器放到类里,在需要的时候new这个功能类,就可以实现功能与触发器的整合。
猜你想搜
星火编辑器 创建触发器
星火三消之三连检测截图
星火三消之三连检测
上一回完成了消块实例化的显示(P2)(https://www.bilibili.com/video/BV1qLeUzKEHS?spm_id_from=333.788.recommend_more_video.0&vd_source=f9c1188016e81eabc613ade954e6d482),红框部分可以看到随机生成的消块构成了三连、四连。 为了避免这一情况我们在生成消块前加入对随机到的消块
3 赞
1 回复
【简单的技能案例】分享自己做的简单的技能预警截图
【简单的技能案例】分享自己做的简单的技能预警
看着论坛好像没什么怪物技能预警的教程,这里我分享一下我自己的方法。 废话不多说,先上效果图: 做法非常简单,先简单说一下步骤: 1.制作一个通用的技能预警特效 2.在怪物技能前摇开始时播放预警特效 3.通过缩放、播放速度来控制预警的大小以及持续时间 4.在技能生效的时候销毁特效 1.先创建粒子特效 打开资源库,资源库上面的选项中选择粒子特效,找到一个合适的特效来修改,这里我使用的是范围伤害中的AO
30 赞
2 回复
00:36
2025年6月18日更新日志&2.0版本前瞻截图
2025年6月18日更新日志&2.0版本前瞻
星火编辑器发布了新的编辑器版本:13 除部分严重BUG修复会覆盖旧版本,以下新功能均在编辑器版本13中生效 开发者可以在编辑器顶部菜单-编辑器版本中进行版本切换 字体相关【非常重要,必看】 编辑器内去除了可选的字体选项,只保留MiSans这一字体(常规+粗体共计14MB),预期这样的改动会让新用户下载的资源减少约100MB本次和字体相关的改动有如下影响: 对于13版本发布的游戏,只保留MiSans
14 赞
8 回复
「自制卡牌游戏DIY」战斗抽卡系统(2)截图
「自制卡牌游戏DIY」战斗抽卡系统(2)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 在上期内容中,我们从卡牌状态的切换打开思路,将从卡池中刷新场上卡牌逻辑用触发器一步步实现,并通过洗牌的方法确保玩家从入场卡池中刷出的卡牌具有随机性。但在此之后系统还需要将抽取的卡牌替换为新卡,并为抽到的法术卡添加法术,方可将刷出卡牌的信息完备地打包给客户端以呈现给玩家,而这正是今天要做的。话不多说,来吧。 接着上期,在对卡池中未抽取的卡牌进行
2 赞
无限恐怖之再现截图
无限恐怖之再现
一、基本信息 游戏名称:无限恐怖之再现 游戏类型:Roguelike 地牢探索 + RPG 角色养成 操作方式:支持 PC 键鼠 / 移动端虚拟摇杆双端操控 目标平台:TapTap(移动端 + PC 端) 游戏视角:俯视角 2D 像素风(NanoVG 矢量渲染) 单局时长:5-15 分钟/副本 IP 来源:基于网络文学经典《无限恐怖》(zhttty 著)世界观改编 二、游戏概述 《无限恐怖之再现》
11 赞
8 回复
官方公告【2025-04-22】截图
官方公告【2025-04-22】
## 【游戏活动集合】---攻略在下面 进群:1039690308 领取狂战士英雄兑换码 1:集赞送奖励!只要动动您的小手点个赞就有以下福利: 2:前400赞,每100赞,全服100钻石,10连抽 3:500赞,全服300钻石,20连抽,让新来的小伙伴游玩更愉快。 4:1000赞,全服额外赠送特殊存档一件!后续每点赞越多!福利越多! 5:在本帖回复关于游戏内容的评论每天随机抽取数名幸运玩家赠送价值
精华
102 赞
521 回复
无须申请,星火编辑器现已公测开放下载截图
无须申请,星火编辑器现已公测开放下载
—————————————————— 各位关注星火编辑器的小伙伴: 感谢大家一直以来对编辑器支持! 破晓已去,曙光降临! 星火编辑器现已开启公测! · 关于下载和资格申请 现已无需申请,请去下面的官方首页直接下载! 缘起测试是星火编辑器自诞生以来第一次对外测试! 从2022年八月开始到十一月,历时三个月。 缘起之后缘聚测试,历时又七个月! 缘聚之后,破晓降临,历时又十二个月! 曾经微弱的星火现已渐
官方
323 赞
374 回复
【作品自荐】——《无尽战争2》截图
【作品自荐】——《无尽战争2》
作品自荐 一、游戏基本信息 游戏名称:无尽战争2;游戏类型:太空题材 4X 策略经营;游戏模式:单机+多人联机(常驻服务器,1800 人同服);屏幕方向:横屏;支持平台:移动端+PC 端。 一句话简介:在 300×300 星系构成的银河中,开采矿产、建造舰队、研发科技、征服星系——一款拥有实时可视化舰队战斗和完整工业产线的太空 4X 策略游戏。 二、核心玩法介绍 三大势力,开局即站队:开局可选择星
9 赞
3 回复
「自制卡牌游戏DIY」战斗抽卡系统(1)截图
「自制卡牌游戏DIY」战斗抽卡系统(1)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 上一期我们完成了游戏的核心功能——战斗抽卡系统的设计,并将主要设计梗概用思维导图的形式清楚呈现。今天我们要着手开始用触发器编写逻辑,实现这个游戏核心玩法系统。本期车速较快,请站稳扶好! 首先我们先做好前置准备,确保已经有了“标准卡牌”类以及足以存储卡牌所需信息的各个成员变量(P2) 同样的,确认玩家信息类里面已经有了这三个“标准卡牌”数组
1 赞
「自制卡牌游戏DIY」战斗抽卡系统(3)截图
「自制卡牌游戏DIY」战斗抽卡系统(3)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 我正在用『星火编辑器』将一张游戏卡牌变成一款卡牌游戏。 在上一期,我们成功把玩家刷新刷出卡的信息经服务端处理后,转化为客户端中可用于显示给玩家的面板控件。这期让我们继续完善战斗抽卡系统及相关功能的触发器逻辑。 还是在触发器客户端,我们已经完成了修改牌面UI的方法,接下来要做两件事:一个是将场上每张刷出来的卡的UI进行生成和保存,另一个是要为
2 赞