在 Unity 中使用第三方包
Posted
技术标签:
【中文标题】在 Unity 中使用第三方包【英文标题】:Using third party packages in Unity 【发布时间】:2018-01-30 20:09:10 【问题描述】:我在我的 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
附加到一个空的游戏对象,但后来我得到了
对象引用未设置为对象的实例
谁能帮我解决这个问题?我是 Unity 的新手。基本上,我想要的只是保持原始 UFPS 文件尽可能干净,并将所有脚本写入不同的文件中。
【问题讨论】:
【参考方案1】:我尝试将 myScript 附加到一个空的游戏对象,但后来我得到了 对象引用未设置为对象的实例
创建一个名为“DamageHandlerHolder”的空游戏对象,然后将脚本附加到它。
找到持有脚本的对象
GameObject oObj = GameObject.Find("DamageHandlerHolder");
获取附加到它的脚本
vp_DamageHandler vpDm = oObj.GetComponent<vp_DamageHandler>();
现在你可以检查变量了:
if(vpDm.dieFunctionCalled)
这解决了您的 null 问题,但我建议您使用 EventManager
注册事件并收到通知玩家死亡。
【讨论】:
EventManager 正是我想要的,谢谢!以上是关于在 Unity 中使用第三方包的主要内容,如果未能解决你的问题,请参考以下文章