質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

3回答

3066閲覧

【unity】【C#】ドラッグでなぞったオブジェクトを消したい

channarizer

総合スコア9

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2018/08/29 06:49

前提・実現したいこと

UnityおよびC#の初心者、初質問です。
Unityで「Unityの寺子屋」チャプター2の放置ゲームを作っています。

イメージ説明
※制作画面・プレイ中

ドラッグでなぞったオブジェクト(徳)を消す機能を実装中に、以下の問題・エラーメッセージが発生しました。

発生している問題・エラーメッセージ

ドラッグでなぞったオブジェクトが消えず、代わりに以下のエラーメッセージが生成される。

NullReferenceException: Object reference not set to an instance of an object
OrbManager.TouchOrb () (at Assets/Scripts/OrbManager.cs:24)
UnityEngine.Events.InvokableCall.Invoke () (at /Users/builduser/buildslave/unity/build/Runtime/Export/UnityEvent.cs:166)
UnityEngine.Events.UnityEvent1[T0].Invoke (.T0 arg0) (at /Users/builduser/buildslave/unity/build/Runtime/Export/UnityEvent_1.cs:63) UnityEngine.EventSystems.EventTrigger.Execute (EventTriggerType id, UnityEngine.EventSystems.BaseEventData eventData) (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/EventTrigger.cs:67) UnityEngine.EventSystems.EventTrigger.OnPointerEnter (UnityEngine.EventSystems.PointerEventData eventData) (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/EventTrigger.cs:73) UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerEnterHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:22) UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerEnterHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction1 functor) (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)

以下、エラーの発生しているソースコードです。

using

1using System.Collections.Generic; 2using UnityEngine; 3 4public class OrbManager : MonoBehaviour { 5 6 private GameObject gameManager; 7 8 // Use this for initialization 9 void Start () { 10 gameManager = GameObject.Find ("GameMnager"); 11 } 12 13 // Update is called once per frame 14 void Update () { 15 16 } 17 18 public void TouthOrb () { 19 if (Input.GetMouseButton (0) == false) { 20 return; 21 } 22 23 gameManager.GetComponent<GameManager> ().GetOrb (); 24 Destroy (this.gameObject); 25 26 } 27} 28 29 30 31### 該当のソースコード 32 gameManager.GetComponent<GameManager> ().GetOrb (); 33 34 35 36### 試したこと、現在の状況 37●再起動 38●Prefabを選択した状態だと、なぜか上記のエラー起きるとの情報あったので、非選択状態でテストプレイしたが改善せず。 39 40TouthOrbの中に、参照されていないオブジェクトが存在しているらしいこと、変数がnullにならないようにすればいい、という情報にたどり着きましたが、nullにならない(参照している状態にする)ために何を行えばいいか分からず、途方に暮れています。 41 42具体的にどうすればいいのか(どの部分に、どういった理由で、どんなコードを記述すればいいか、もしくはコード外の作業なのか)が見当がつかない状態ですので、ご教授いただけますと幸いです。 43 44何とぞよろしくお願いします。 45 46 47 48 49### 補足情報(FW/ツールのバージョンなど) 50Unity 51Version 2018,2,5f1 Personal 52 53MacOS 54HighSierra Version10.13.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

C#

1void Start () { 2gameManager = GameObject.Find ("GameMnager"); 3}

ここの"GameManager"のスペルミスですかね?

投稿2018/08/29 07:58

kimkim

総合スコア142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

channarizer

2018/08/29 08:34

kimkim様 迅速なご回答をしていただき、ありがとうございます。無事に狙った動作できました。 ”GameMnager”のスペルミスが原因でした…。 本当にありがとうございました。
guest

0

ベストアンサー

エラーの最初を見る限りですが、原因として
・GameManager内のGetOrb関数に初期化されていない変数がある
・そもそもgameManagerにGameManagerがアタッチされていない

あと

void Start () { gameManager = GameObject.Find ("GameMnager"); }

でGameMnagerとスペルミスしていますが、これも原因かもしれません。

投稿2018/08/29 07:56

TomoG12

総合スコア299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

channarizer

2018/08/29 08:29

TomoG12様 迅速なご回答をしていただき、ありがとうございます。無事に狙った動作できました。 ”GameMnager”のスペルミスが原因でした…。 原因の可能性についての丁寧な言及を考慮して、ベストアンサーとさせていただきました。 本当にありがとうございました。
guest

0

GameObject.Find("GameMnager")
でなく
GameObject.Find("GameManager")
じゃないですかね?
まずエラーは翻訳してみたり検索してみたりすると良いと思いますよー

投稿2018/08/29 07:52

tekateka

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

channarizer

2018/08/29 08:33

tekateka様 素早いご回答、ありがとうございました。無事に狙った動作できました。 ”GameMnager”のスペルミスが原因でした…。 頑張って検索します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問