在Unity中使用第三方软件包

时间:2017-08-22 13:41:25

标签: c# unity3d

我在我的FPS游戏中使用UFPS。 UFPS有一个类vp_DamageHandler。它附在我的目标上。在这堂课里面,有:

public virtual void Die()
{
dieFunctionCalled = true; //the only thing I've added to this class, besides declaring dieFunctionCalled
...some UFPS code...//among other things, this is where the object is destroyed or deactivated
}

我希望尽可能保持原始文件的清洁。我想在不同的脚本中进行自己的编码,以保持整洁。

我想在目标死亡时做一些其他事情,所以我也将myScript添加到我的目标中,然后尝试了这个:

void Update () {
        if (GetComponent<vp_DamageHandler> ().dieFunctionCalled) {
            GetComponent<vp_DamageHandler> ().dieFunctionCalled = false;
            Debug.Log ("dieFunctionCalled");
        }
}

问题是在dieFunctionCalled设置为true之前目标被销毁。因此,当目标终止时,myScript将被停用,并且不会记录dieFunctionCalled。如果我要重新生成目标,dieFunctionCalled会显示在控制台中。

我尝试将myScript附加到空的GameObject,但后来我得到了

  

对象引用未设置为对象的实例

任何可以帮助我的人?我是Unity的新手。基本上,我想要的是保持原始UFPS文件尽可能干净,并将我的所有脚本写在不同的文件中。

1 个答案:

答案 0 :(得分:0)

  

我尝试将myScript附加到一个空的GameObject,但后来我得到了   对象引用未设置为对象的实例

创建一个名为&#34; DamageHandlerHolder&#34;的空GameObject然后将脚本附加到它。

找到持有脚本的对象

GameObject oObj = GameObject.Find("DamageHandlerHolder");

获取附加的脚本

vp_DamageHandler vpDm = oObj.GetComponent<vp_DamageHandler>();

现在您可以检查变量:

if(vpDm.dieFunctionCalled){}

这解决了您的空问题,但我建议您使用EventManager注册事件并通知玩家死亡。