2025 年 2 月 13 日更新日志【12 版本】
星火编辑器发布了新的编辑器版本:12。
除部分严重 BUG 修复会覆盖旧版本,以下新功能均在编辑器版本 12 中生效。
开发者可以在编辑器顶部菜单-编辑器版本中进行版本切换。
数编快速保存
星火编辑器在开发较大项目时的保存速度一直是一大痛点,星火 2.0 将使用全新的框架来保存数编和触发器的代码,以提高全局保存速度,但对于使用旧有文件存储框架的 1.0 版本,我们也仍然在努力加快用户的调试和保存速度。
在 12 版本中,我们在文件菜单下加入了「保存数编」功能。
该指令能以「快速」模式保存数编内容,但会跳过一些不常用的检测和流程。
具体保存时间视乎具体项目会有所变化,但 基本测试表明,在保存数编内容较大的项目时,这一功能可使保存时间加快 7-10 倍。
需要注意的是,目前的快速保存机制跳过了一些步骤和流程,因此在一些特定条件下会有缺陷,因此星火编辑器目前暂未以该保存模式替代默认的保存命令。其中尤其需要注意的要点是:
数编快速模式指令会跳过所有对数编公式的改动编译,因此使用快速保存模式的用户需要对此有所预期——修改普通节点属性后点击数编快速保存命令并进行调试后,普通属性会正常生效,但节点公式的改动不会产生影响。
若想要测试公式改动,用户依然需要使用默认的保存命令来进行完整保存。
此外,需要注意的是,数编快速保存功能尽管不会对公式改动进行编译,但不代表用户对数编的改动不会被保存到项目中,快速保存功能跳过的仅仅是从公式带脚本代码的生成过程而已。因此对项目进行了快速保存后直接关闭项目的用户无需担心自己对公式的修改会在下次打开项目时丢失。
此外,界面编辑器控件的绑定事件底层也是数编公式,所以对于界编控件事件的修改,也无法通过「保存数编功能」进行,需要进行正常的保存后方可生效。
遍历所有的可附加枚举
星火编辑器的一个特色就是开发者可以在数编中增加自定义的伤害类型、单位类型、单位属性、验证器代码……等等。但有时候开发者会想要遍历所有这些他们自定义的可附加枚举,这一行为在过去的星火编辑器中虽然是可行的 ,但实现过程却非常复杂,许多开发者不得不手动记录下所有自己添加的可附加枚举。
为了方便开发者,在 12 版本中,我们包装了对数编中所有可附加枚举的遍历方法。现在服务端和客户端触发器都有了 「获取指定类型的所有可附加枚举」和「获取指定类型的所有可附加列表 Key」两种函数。
这两个函数会返回对应类型的 Map 字典集合。遍历集合就能获得对应的可附加枚举的所有内容,目前的可附加枚举类型包括:
- 单位属性(字符串/数值)
- 单位属性子类型
- 单位状态标记
- 游戏属性
- 游戏配置
- 玩家属性
- 验证器代码
- 技能分类
- Buff 分类
- 能量类型
- 血条类型
自定义物品栏 UI 组件的优化
在听取了用户的反馈后,我们对自动以物品栏控件相关的功能进行了进一步的优化。
自从星火编辑器开放动态添加物品栏格子的功能后,用户就一直希望自定义物品栏格子的控件也能支持动态添加的物品栏格子。
现在用户可以通过动态创建的「自定义物品栏格子」控件来绑定动态添加给物品栏的格子。
此外,我们观察到新人用户在使用自定义物品栏组件来绑定物品栏时,经常会忘记将数编中对应的物品栏的显示位置设置为自定义显示位置,导致物品栏无法正确显示却没有任何提示的问题。为此,今后用户在使用自定义物品栏控件绑定类型为自定义位置 G 和 H 以外的物品栏 时,将在信息面板收到一条警告信息,告知用户使用了错误的配置。
云变量货币物品的使用优化
一个主动使用的物品一旦被设置为云变量货币物品,那么它在被绑定到指定玩家前是无法被正常使用的,但在过去,玩家点击此类物品不会有任何提示,让用户难以查清物品无法被使用的理由。
为此,我们加入了更多调试信息,当这类情况发生时,用户可以在服务端信息列表中明确看到错误信息:「云变量货币物品未绑定用户,使用失败」。
此外,在过去,为了提醒用户如何正确修改云变量货币的堆叠数量,我们在设置物品堆叠数量函数中加入了警告信息,当用户尝试使用该动作修改货币型云变量物品的堆叠数量时,会显示警告信息来告知用户正确的操作方法,即使用「消耗云变量货币物品」动作来修改物品的使用次数。但这一警告信息在玩家通过点击物品栏 UI 正常使用物品时也会出现,这可能令部分用户产生了误解,因为对于已经绑定了玩家的货币型云变量物品,用户通过物品栏 UI 来使用物品实际上已经走了「消耗云变量货币物品」的路径,因此不需要用户再进一步进行处理。
为此,我们优化了提示路径,现在玩家通过点击 UI 来使用云变量货币物品时,该警告将不再出现。
技能摇杆组件的优化
当用户将技能摇杆与非主控单位绑定时,现在技能指示器将优先显示在被绑定单位身上而非主控单位身上。
连续施法『防止鞭尸』逻辑的进一步优化
星火编辑器在 11 版本中对连续施法逻辑进行了一定的优化,避免连续施法在击杀目标单位后仍然一直对目标单位的尸体进行『鞭尸』。
该功能加入以来,运作符合预期。 但在收集了用户反馈以后,我们注意到部分用户希望使用连续施法机制来实现这样的效果:
单位平时不会使用技能,但用户在第一次点击技能后,单位会开始连续使用这个技能,并且在击杀第一个目标后自动寻找附近的其它目标进行攻击。
为此,我们对连续施法的『防止鞭尸』逻辑进行了这样的改动,如果用户在技能数编表中勾选了「连续施法使用智能施法搜敌逻辑」,则『防止鞭尸』逻辑不会阻止单位寻找其他目标进行攻击。而只有在未勾选「连续施法使用智能施法搜敌逻辑」时,连续施法才会在最初的目标单位被击杀后自动停止。
点的地形碰撞标记集合
在过去,触发器 仅能判断一个指定点是否存在碰撞,却无法精确判定改点碰撞的具体属性:如是完全禁止通行还是仅仅禁止建造建筑或是禁止行走,令一些想要构造自定义建造系统的用户感到了困扰。
在 12 版本中我们在服务端/客户端触发器增加了新的函数「获取场景点的碰撞标记集合」,用户可以指定任意一场景点,该函数将返回一个集合,包含了该点所拥有的所有碰撞属性。
该集合可以通过「遍历碰撞标记集合」面向过程方法进行遍历,获取每一个碰撞标记。
目前点的碰撞标记共有 11 种,但主要在使用的只有「不可建造」与「不可行走」两种标记。
碰撞标记集合还拥有「是否包含」方法来直接判断一个点的碰撞标记集合中是否包含指定的标记。
与此同时,考虑到用户构造自定义建造系统时可能出现的具体需求,客户端版本的「获取场景点的碰撞标记集合」函数还拥有一个额外的参数,允许用户决定是查询该点在地编中的默认碰撞标记还是包含该点上可能已经存在的建筑单位足印带来的额外碰撞标记。
触发器带方向的矩形单位搜索
在过去,触发器和数编都拥有获取矩形、扇形、圆形范围内单位的方法。但此前触发器只能获取两边与 xy 轴平行的矩形中的所有单位,而数编的直线搜索可以是任意朝向的矩形,这导致触发器与数编的功能不对应了。 为此,在 12 版本中,我们在服务端/客户端触发器增加了获取带方向的矩形区域内所有单位的面向对象 方法,让用户可以更自由地自定义技能指示器和矩形单位搜索。 在服务端,该方法位于场景对象之下,名为”获取指定方向矩形区域内的所有单位”。在客户端,这是一个名为“获取矩形区域内的所有单位”的面向过程函数。
客户端触发器 Buff 相关内容优化
在过去,客户端事件中与 buff 获取与丢失相关的事件有“单位获得 Buff”、“单位失去 Buff”、“Buff 获得”、与“Buff 失去”四种,分别用于注册特定单位和特定 Buff 的 Buff 获得与丢失事件。但实际只有单位版本事件有效,Buff 版本的事件没有效果。我们注意到了这个问题后,在 12 版本中修复了 Buff 版本的这两个事件。 此外,现在客户端 Buff 对象可以通过”获取层数”方法来直接获取层数,无需通过服务端转发。
追踪弹道的最大距离限制
现在数编中的“发射投射物节点”与“目标移动器节点”在目标为单位目标时,不再有追踪距离上限。在过去,所有的追踪弹道会在飞行距离达到原始目标距离的两倍时自动停止,这一设置原本是为了减少场景中出现大量不断在追踪目标的弹道而进行的优化,但再过去这一逻辑给部分用户带来了困惑,因此在 12 版本这一追 踪距离限制已经被去除。
单位移除事件类型参数
现在单位移除事件增加了“移除类型”这一参数,可以从中获取到单位被移除的原因。“移除类型”是一个预设值,可能的值为:
- 正常死亡 - 因为单位死亡且经过了尸体保留时间后而导致的自动移除。弹道单位和阻挡单位会在死亡后立即被自动移除。
- 脚本调用 - 因为触发器和脚本调用单位移除而导致的移除。
- 场景关闭 - 因为场景关闭而导致的场景中的单位的批量移除。
- 游戏关闭 - 因为游戏关闭而导致的所有单位移除。(触发器执行环境的生命周期中基本无法捕捉到)
触发编辑器
现在 for 循环允许负数的步长了,最终值可以小于初始值。(过去只能是正数)
隐藏了没有实际作用的“单位即将拾取物品”事件,该事件是意外被放出的。
我们进一步优化了沿路线移动/进攻动作的 AI,使得他们的路线选择更加合理。
我们优化了在触发编辑器中批量复制局部变量和语句时,如果被粘贴的地方缺少特定的局部变量,会自动创建变量但会使被复制的语句顺序被打乱的问题。今后复制行为依然会自动创建缺失的局部变量,但原有语句间的相对顺序将保持原样。
我们优化了单位和物品数组在客户端和服务端 之间的序列化逻辑,在过去,如果单位/物品数组存在已被删除的单位/物品成员,则该数组是无法正确在服务器和客户端之间传递的,12 版本优化了这一逻辑,使得单位和物品数组的事件转发不会因为存在被无效物品/单位而失败。
「物品-云变量还原时」事件现在有了「触发事件的·绑定单位」参数,可以获取云变量物品的绑定单位。
此外,我们为客户端触发器中的一些函数和方法参数增加了更多默认值。
现在「调试-指定模式调试」在编辑器环境下也可以通过触发语句「获取调试模式」来获得输入的模式 Key 了,之前这一语句只有在实机环境下方可生效。
地形编辑器
12 版本中优化了地编的一系列崩溃问题,并在一些关键节点增加了更多错误提示。比如,当项目丢失光照氛围文件时,尝试新建场景将会提示光照氛围丢失,而不是点击创建之后没有任何反应。当项目缺少场景文件数据时,尝试打开场景会提示场景数据丢失,而不是使编辑器崩溃。
在过去,由于地形编辑器的菜单栏位于标题栏上,用户需要点击标题栏的空白部分才能拖动地编窗口。但我们注意到部分分辨率较低的用户显示器上,菜单文字会占满整个标题栏,对窗口的拖拽带来了麻烦。为此,我们修改了菜单栏的拖拽逻辑,用户即使按住了菜单栏的文字部分依然可以对窗口进行拖拽,同时也不影响菜单栏的下拉展开功能。