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

C# Unity3d C使用库存项目添加/减去运行状况,c#,unity3d,C#,Unity3d,我这里有一个小问题,过去几个小时我一直在努力解决。我使用Unity 5和c来编写代码 我有一个PlayerScript,它为玩家提供了健康/口渴/饥饿值 我还有另一个脚本作为清单。我已经添加了玩家可以消耗的物品水 以下是一些代码供您进一步了解: PlayerScript: public float health = 100f; public float hunger = 100f; public float thirst = 100f; 库存: if (consumeEffects[i] ==

我这里有一个小问题,过去几个小时我一直在努力解决。我使用Unity 5和c来编写代码

我有一个PlayerScript,它为玩家提供了健康/口渴/饥饿值

我还有另一个脚本作为清单。我已经添加了玩家可以消耗的物品水

以下是一些代码供您进一步了解:

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资产索引/UI_Hotbar.cs:120

第120行包括我们在干渴中加25的那一行。试图查看层次结构中的UI热栏有什么问题并不能给我答案。一切看起来都很好


谁来帮忙?提前谢谢

在您的评论部分上载图像后,PlayerScript不会附加到您的游戏对象。这就是GetComponent失败的原因。必须将PlayerScript脚本附加到游戏对象


您可以从编辑器或通过启动函数GameObject.FindFPSController.AddComponent中的脚本来执行此操作

你能发布你的层次标签的截图吗?@Programmer-好了:好的。你能选择它并贴一张附在它上面的组件图片吗?同时,请包括您的代码,以显示consumeEffects是如何初始化的。@程序员,这里有一段consumeEffects代码:它可以用于其他项目,只要消费,但不能用于饮用水。你是什么意思,贴上附在上面的组件的照片?喜欢水吗?这里:关闭但选择FPSController GameOBject,然后像你那样发布图片。现在,您选择了水项目游戏对象。我还认为您应该双击错误,它将打开代码编辑器并指向错误所在的位置。请把发生错误的那行代码发出来。哦,我的天哪!真不敢相信!哈哈,我在FirstPersonController上使用了PlayerScript,而不是FPSController游戏对象。我已经将FPSController更改为FirstPersonController,现在一切正常。妈的,谢谢你!我现在觉得自己很蠢,lolIt经常发生。可能是GameObject.Find或GetComponent失败。这就是为什么我要照片来证实这一点。