2016-11-14 18 views
1

ここ2〜3時間の間、私は少し修正するつもりです。私はUnity 5とC#を使ってコードを作成しています。Unity3d 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の水を加えるはずであることを意味します。しかしそれはdoesnt!

私はデバッグメッセージを見ることができるので、それが動作します知っているが、同時に、私はエラーを取得:

とNullReferenceException:オブジェクト参照オブジェクト UI_Hotbar.ActivateItem(のInt32インデックス)のインスタンスに設定されていません(Asset/UI_Hotbar.cs:120)

行120には、喉に25を追加する行が含まれています。階層のUIホットバーで何が間違っているかを確認しようとしても、私に答えが与えられません。すべてがうまく見えます。

誰かお手伝いしますか?前もって感謝します!

+0

Start()機能でエディタまたはスクリプトを使用して、あなたのHierarchyタブのスクリーンショットを投稿することができていることのいずれかを行うことができますか? – Programmer

+0

@Programmer - あなたが行く:https://i.snag.gy/Q0cSuR.jpg – papi

+0

Ok FPSControllerが存在する。それを選択して、それに接続されているコンポーネントの写真を投稿できますか?同時に、 'consumeEffects'の初期化方法を示すコードを含めてください。 – Programmer

答えて

2

コメントセクションの画像アップロードでは、PlayerScriptにはFPSController GameObjectが添付されていません。そのため、GetComponent<PlayerScript>()が失敗しています。 PlayerScriptスクリプトをFPSController GameObjectに添付する必要があります。

あなたはGameObject.Find("FPSController").AddComponent<PlayerScript>();

+0

ああ、私のお元気ですか!私はこれを信じることができない!笑。 FPSControllerのゲームオブジェクトではなく、FirstPersonControllerのPlayerScriptを持っていました。私は "FPSController"を "FirstPersonController"に変更しました。おい、大変ありがとう!私は今、とても愚かな気がするよ、笑 – papi

+0

それはたくさん起こる。 GameObject.FindまたはGetComponentが失敗する可能性があります。だから私はこれを確認するための写真を頼んだのです。 – Programmer

+0

ありがとうございました! gg – papi

関連する問題