麦德三世 发表于 2015-8-29 19:53:55

[基础向演示]使用Catalog函数动态替换技能效果、图标和介绍(动态技能替换)

SC2的Catalog函数允许你在游戏运行中动态修改数据编辑器里原本设定好的一些属性。

但是并非所有种类的属性都可以动态修改。这个基础向演示展示了如何利用这一函数来动态更改技能的效果、图标和介绍,以此达到所以替换技能的目的。


由于SC2的单位无法在运行中添加和删除技能,所以有些地图作者会想要通过先把所有技能都塞给一个单位,然后只显示其中几个的方法来动态替换技能。然而这个方法有一个最大的弱点就是SC2的每个单位最多只能拥有30多个技能。想要把所有技能都塞进去根本做不到。

如果我们可以动态修改技能的效果图标和介绍,这样我们只需要用有限几个模版技能就能替换出任意的效果类技能了。

要注意的是效果类技能的“效果”属性是无法直接动态更改的,但我们却可以更改集合类效果的子效果。于是,我们可以直接制作三个模版技能,分别对应无目标、单位目标和点目标,然后让这三个技能分别指向一个集合类效果。这样,我们只要动态更改集合类效果的子效果,就能动态更改技能效果了。

然而有人就要问了。既然我们什么效果都可以塞到集合类效果里,那为啥还需要做三个技能呢?

首先,你的模板必须要能区分是无目标技能还是,有目标技能,这一点是技能数据本身决定而非其子效果决定,所以你至少需要一个无目标技能和一个有目标技能才能涵盖所有效果技能。而本身集合类效果中就需要你指定这个集合类效果是单位目标还是点目标,而一个集合类效果一旦决定好目标类型是无法动态更改的。所以你至少需要两个集合类效果才能保证挂接所有的点目标技能和单位目标技能。

解决了最关键的技能效果问题,其他的就都好办了,技能按钮的快捷键、介绍、图标全都可以通过Catalog函数来动态更改。

甚至技能花费和CD也一样。(为了测试方便,这个演示地图里没有涉及改技能花费和CD,但是方法和更改其它属性一样,因此大家可以举一反三)

因此我们动态替换技能的思路就是这样:

- 检查想要替换的目标技能的类型,看是无目标、点目标还是单位目标。

- 按照目标技能的类型修改对应的模版集合效果,将它们的子效果设为目标技能的效果。

- 修改对应模板的按钮图标、快捷键和介绍。

- 想要的话还可以更改CD和能量消耗。

我按照这个模式制作了一个演示地图

运行演示地图后,你可以看到一个幽灵兵,他初始有一个狙击技能。每当你将一个技能施放完毕,该技能就将随机变成另一个技能。随机结果可能是一个点目标技能、无目标技能或者单位目标技能。以下是演示地图里所有10个可能随机到的技能:

1. 兴奋剂
2. 哨兵护盾
3. 灵能风暴
4. 星河旋窝
5. 250毫米火炮
6. 闪现
7. 自动机炮
8. 大和火炮
9. 狙击
10. EMP

要记得的是,不要试着让模版技能随机到自己。因为我们的模板技能本身的效果是一个集合效果,而你若将它的子效果设为“该技能的效果”,那么就变成自己嵌套自己了。

图片:漩涡、兴奋剂、哨兵护盾、自动机炮


闪现



250毫米火炮


狙击



EMP


灵能风暴+漩涡



注:演示地图在附件里

看什么看呢 发表于 2015-8-29 19:57:02

赞!

看什么看呢 发表于 2015-8-29 20:02:59

随机到自动机炮的时候貌似不对 提示要求目标来着

windywel 发表于 2015-9-1 05:37:31

头目v5

wyg5105478 发表于 2015-9-1 19:58:40

我靠黑科技啊!头目万岁!!!

a筱怪兽 发表于 2015-9-3 13:24:04

支持

lanyuetingfeng 发表于 2015-9-5 20:26:01

这个必须得顶。可以说从一定意义上来讲,这个突破了星际2无法自由更换技能的桎梏。

solon58552 发表于 2015-10-15 00:33:54

这个技术好,果然能拿来做很多坏事了

xhang 发表于 2018-1-12 10:03:47

学习了!!!!!!!!!!!!!!!!!!!
页: [1]
查看完整版本: [基础向演示]使用Catalog函数动态替换技能效果、图标和介绍(动态技能替换)