我在我的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文件尽可能干净,并将我的所有脚本写在不同的文件中。
答案 0 :(得分:0)
我尝试将myScript附加到一个空的GameObject,但后来我得到了 对象引用未设置为对象的实例
创建一个名为&#34; DamageHandlerHolder&#34;的空GameObject然后将脚本附加到它。
找到持有脚本的对象
GameObject oObj = GameObject.Find("DamageHandlerHolder");
获取附加的脚本
vp_DamageHandler vpDm = oObj.GetComponent<vp_DamageHandler>();
现在您可以检查变量:
if(vpDm.dieFunctionCalled){}
这解决了您的空问题,但我建议您使用EventManager
注册事件并通知玩家死亡。