实际上,我使用的是2000年的Deus Ex原版游戏。我创建了一个"DeusEx.Flare“的子类,将其命名为"rflare”,并将其保存到我自己的包中。我已经成功地编译了它,它可以工作,但不是我想要的方式。我想重写函数"LifeSpan = 30“并赋予它"LifeSpan = 120”。问题出在文档上。实际上是没有的。我能找到的文档通常太混乱了,并且没有给出足够好的例子来说明我想要做的事情。下面是代码。我知道我应该使用“超级”这个表达,但我已经用尽了我知道的所有方法。我就是不能让它工作。但是,如果我不介意扔普通的照明弹(在30秒内熄灭)和我自己的照明弹,我可以让它工作,我自己的照明弹只会落到地上没有声音,但实际上会持续120秒。所以我的代码最终会抛出两个光斑。1颗普通照明弹在30秒内熄灭。另一个持续120年,但不会像普通的照明弹那样被抛出。
下面是我正在尝试更改的DeusEx.Flare脚本代码。
function LightFlare()
{
local Vector X, Y, Z, dropVect;
local Pawn P;
if (gen == None)
{
LifeSpan = 30;
}
}我的第一个尝试是复制它并在我自己的包中更改它。它工作了,但再次,它发射了两个照明弹,一个正常的和一个有点工作的。我只想做一个。下面是我改正代码的尝试。
function LightFlare()
{
Super(Flare).LightFlare();
if (gen == None)
{
LifeSpan = 120;
}
}所有这一切都只是产生正常的耀斑,持续的时间没有区别。有人能帮帮我吗?
发布于 2019-01-09 19:30:02
我建议从父类中完整地复制LightFlare函数,而不是调用super.您不想让原始函数运行,因为这会弄乱生命周期变量。
例如:
class RFlare extends Flare;
function LightFlare()
{
local Vector X, Y, Z, dropVect;
local Pawn P;
// Original function here, change lifetime when specified.
if (gen == None)
{
LifeSpan = 120;
}
}
defaultproperties
{
}https://stackoverflow.com/questions/48547721
复制相似问题