Unity3d C#使用库存项目添加/减去运行状况

时间:2016-11-14 07:07:31

标签: c# unity3d

我在这里遇到一些问题,我过去几个小时都试图解决这个问题。我使用Unity 5和c#进行编码。

我有PlayerScript,它具有播放器的健康/口渴/饥饿值。

我还有另一个用作库存的脚本。我添加了项目" water"你作为一个玩家可以消费。

这里有一些代码供您了解:

PlayerScript:

public float health = 100f;
public float hunger = 100f;
public float thirst = 100f;

清单:

if (consumeEffects[i] == "DrinkItem")
                    {
                        GameObject.Find ("FPSController").GetComponent<PlayerScript>().thirst += 25.0f;
                        Debug.Log("You drank some water!");
                    }

所以基本上,我有一个具有消耗类别和DrinkItem元素的项目〜这意味着当我尝试消耗例如:水时,它应该添加25个水来解渴。但它没有!

我知道它有效,因为我可以看到调试消息,但同时我收到错误:

NullReferenceException:未将对象引用设置为对象的实例 UI_Hotbar.ActivateItem(Int32 index)(在Assets / UI_Hotbar.cs:120)

第120行包括我们添加25口渴的行。试图看到层次结构中的热门栏错误有什么不给我答案。一切看起来都很好。

有人请帮忙吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

在评论部分中上传图片时, FPSController GameObject未附加PlayerScript。这就是GetComponent<PlayerScript>()失败的原因。您必须将PlayerScript脚本附加到 FPSController GameObject。

您可以通过编辑器或Start()函数GameObject.Find("FPSController").AddComponent<PlayerScript>();

中的脚本执行此操作