1

我实际上使用的是 2000 年的原始 Deus Ex 游戏。我创建了一个“DeusEx.Flare”子类并将其命名为“rflare”并将其保存到我自己的包中。我已经成功编译它,它可以工作,但不是我想要的方式。我想覆盖函数“LifeSpan = 30”并给它“LifeSpan = 120”。问题是文档。几乎没有。而且我通常可以找到的文档太混乱了,并且没有为我正在尝试做的事情提供足够好的示例。这是代码。我知道我应该使用“超级”表达,但我已经用尽了所有我知道如何使用它的方法。我根本无法让它工作。但是,如果我不介意同时扔普通照明弹(在 30 秒内熄灭)和我自己的照明弹,我可以让它工作,它只会在没有声音的情况下掉到地上,但实际上会持续 120 秒。所以我的代码最终会抛出 2 个耀斑。1 次正常耀斑,在 30 秒内熄灭。另一个可以持续 120 秒,但不会像普通照明弹那样被抛出。

这是我试图更改的 DeusEx.Flare 脚本中的代码。

function LightFlare()
{
local Vector X, Y, Z, dropVect;
local Pawn P;

if (gen == None)
 {  
    LifeSpan = 30;
 }
}

我的第一次尝试是复制它并在我自己的包中进行更改。它起作用了,但又一次,它发射了 2 个耀斑,1 个正常,1 个正常工作。我只想做一个。所以这是我纠正代码的尝试。

function LightFlare()
{
Super(Flare).LightFlare();

if (gen == None)
    {
        LifeSpan = 120;
    }
}

所有这一切都是产生正常的耀斑,持续时间没有区别。有人可以帮帮我吗?

4

1 回答 1

1

我建议从父类中完全复制 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
    {
    }

于 2019-01-09T11:30:01.927 回答