我在这里遇到一些问题,我过去几个小时都试图解决这个问题。我使用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口渴的行。试图看到层次结构中的热门栏错误有什么不给我答案。一切看起来都很好。
有人请帮忙吗?提前谢谢!
答案 0 :(得分:2)
在评论部分中上传图片时, FPSController GameObject未附加PlayerScript
。这就是GetComponent<PlayerScript>()
失败的原因。您必须将PlayerScript
脚本附加到 FPSController GameObject。
您可以通过编辑器或Start()
函数GameObject.Find("FPSController").AddComponent<PlayerScript>();