在 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 中使用第三方包的主要内容,如果未能解决你的问题,请参考以下文章

Unity使用官方第一人称控制器(第三人称参考)

Unity微信Android端第三方登陆

Unity纹理优化:缩小包体

Unity中用Mono插件解析xml文件

Unity存储数据的各种路径

如何在unity中调用 多个 第三方android sdk