前提・実現したいこと
Unityでオブジェクト(Image_file)を削除するコードを書いています。
Button_destroyFileを押すと”本当に消しますか?”のメッセージとOK,cancelボタンが出ます。
<イメージ>
Canvas_main
-Image_file
--Image_destroyFile
---Button_destroyFile ←スクリプト(Test_buttonDestroyObject)
--Image_destroyFile(Clone)
---Button_destroyFile(Clone)
Canvas_message
-Image_message
--Button_ok
--Button_cancel
Empty_commonFunction ←スクリプト(CommonFunction )
最初のDebug.Log(targetObject);と同じ値を2回目のDebug.Log(targetObject);でも取得し、オブジェクトImage_fileを削除したいです。
発生している問題・エラーメッセージ
最初のDebug.Log(targetObject);ではImage_file(Clone) (UnityEngine.GameObject)が返ってくるのですが、2回目のDebug.Log(targetObject);ではNullが返ってきてしまいます。
そのため、オブジェクトの削除ができません。
エラーメッセージ
該当のソースコード
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using System.IO; 6 7public class Test_buttonDestroyObject : MonoBehaviour 8{ 9 public GameObject empty_commonFunction; 10 public GameObject image_cancel_message; 11 12 GameObject targetObject; 13 14 15 //このボタンが押されたら 16 public void PushThisButton() 17 { 18 //省略用の変数commonを作成 19 CommonFunction common = empty_commonFunction.GetComponent<CommonFunction>(); 20 21 targetObject = this.transform.parent.parent.gameObject; //このdestroyボタンの親の親(Image_file)を取得 22 string fileName = targetObject.transform.GetChild(1).gameObject.GetComponent<Text>().text; //ファイル名を取得 23 Debug.Log(targetObject); ←最初のDebug☆ 24 25 common.DisplayMessage("本当に削除してもよろしいですか?\n「" + fileName + "」"); 26 common.DisplayButtonOk_leftMessage(); 27 image_cancel_message.SetActive(true); 28 CommonFunction.buttonMode = CommonFunction.DESTROY_FILE; 29 } 30 31 32 //ファイルとファイルを表示するオブジェクトを消すメソッド 33 public void DestroyFileAndObject() 34 { 35 Debug.Log(targetObject); ←2回目のDebug☆ 36 Destroy(targetObject); 37 } 38} 39
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using System.IO; 6 7public class CommonFunction : MonoBehaviour 8{ 9 public GameObject image_message; 10 public GameObject image_ok_message; 11 public GameObject image_cancel_message; 12 public GameObject image_toFileManager_message; 13 public GameObject image_popUp; 14 15 public GameObject text_message; 16 17 public GameObject button_destroyFile; 18 19 public GameObject empty_filesManager; 20 public GameObject empty_list_amikata_basic; 21 public GameObject empty_fileSelect; 22 23 public static int buttonMode; 24 25 public const int DESTROY_FILE = 1; 26 public const int MESSAGE = 2; 27 28 public const int FILE_MAX = 100; 29 30 31 32 33 //OKボタンを押したら 34 public void PushButtonOK_message() 35 { 36 switch (buttonMode) 37 { 38 case DESTROY_FILE: 39 button_destroyFile.GetComponent<Test_buttonDestroyObject>().DestroyFileAndObject(); 40 HydeMessage(); 41 break; 42 43 case MESSAGE: 44 HydeMessage(); 45 break; 46 47 default: 48 Debug.Log("modeが設定されていません。"); 49 break; 50 } 51 } 52 53 //メッセージを消すメソッド 54 void HydeMessage() 55 { 56 image_ok_message.SetActive(false); 57 image_cancel_message.SetActive(false); 58 image_toFileManager_message.SetActive(false); 59 image_message.SetActive(false); 60 } 61 62 //okボタンをメッセージの左側に表示するメソッド 63 public void DisplayButtonOk_leftMessage() 64 { 65 image_ok_message.SetActive(true); 66 float x = -130f; 67 float y = -80; 68 image_ok_message.transform.localPosition = new Vector3(x, y); 69 } 70 71}
試したこと
単純化したモデルを作って動かしたところうまく行ったので、本番のこちらでなぜうまく行かないのががわかりません。ご教示ください。
補足情報(FW/ツールのバージョンなど)
Unity2018.3.1f1
VisualStudio2017
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。