前提・実現したいこと
Unityでセーブロードのシステムを作っています。
実行前はエラーメッセージはないのですが、SaveLoadFileを関連付けているButtonを押すと、エラーメッセージが出てきます。
どのように解決すれば良いのでしょうか?
教えてください。
よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージ
NullReferenceException: Object reference not set to an instance of an object
SaveLoadFile.Save () (at Assets/SaveLoadFile.cs:41)
UnityEngine.Events.InvokableCall.Invoke () (at <ef667cdc82bf4a4e911d1ddea9ff581d>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <ef667cdc82bf4a4e911d1ddea9ff581d>:0)
UnityEngine.UI.Button.Press () (at C:/Program Files/Unity/Hub/Editor/2020.3.9f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:68)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/Program Files/Unity/Hub/Editor/2020.3.9f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/UI/Core/Button.cs:110)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/Program Files/Unity/Hub/Editor/2020.3.9f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at C:/Program Files/Unity/Hub/Editor/2020.3.9f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:262)
UnityEngine.EventSystems.EventSystem:Update() (at C:/Program Files/Unity/Hub/Editor/2020.3.9f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:385)
該当のソースコード
C#
1ソースコードusing UnityEngine; 2using System.Collections; 3using UnityEngine.UI; 4using System.IO; 5using System.Runtime.Serialization.Formatters.Binary; 6using System; 7 8public class SaveLoadFile : MonoBehaviour 9{ 10 11 // 入力フィールド 12 [SerializeField] 13 public string inputField; 14 15 [SerializeField] 16 public float HPdata; 17 [SerializeField] 18 public float playerxdata; 19 [SerializeField] 20 public float prayerydata; 21 22 // ファイルストリーム 23 private FileStream fileStream; 24 // バイナリフォーマッター 25 private BinaryFormatter bf; 26 27 private CreateNewData createNewData; 28 29 private player PlayerSclipt; 30 private DamageCheckSclipt HPSclipt; 31 32 33 void Start() 34 { 35 createNewData = GetComponent<CreateNewData>(); 36 } 37 38 public void Save() 39 { 40 41 HPdata = HPSclipt.HP(); 42 playerxdata = PlayerSclipt.X(); 43 prayerydata = PlayerSclipt.Y(); 44 45 46 createNewData.GetSaveData().SetHp(HPdata); 47 48 createNewData.GetSaveData().SetPlayerX(playerxdata); 49 50 createNewData.GetSaveData().SetPlayerY(prayerydata); 51 52 53 inputField = createNewData.GetSaveData().GetJsonData(); 54 55 56 bf = new BinaryFormatter(); 57 fileStream = null; 58 59 60 61 62 try 63 { 64 // ゲームフォルダにfiledata.datファイルを作成 65 fileStream = File.Create(Application.dataPath + "/filedata.dat"); 66 // クラスの作成 67 Data data = new Data(); 68 // 入力フィールドのテキストをクラスのデータに保存 69 data.dataText = inputField; 70 // ファイルにクラスを保存 71 bf.Serialize(fileStream, data); 72 } 73 catch (IOException e1) 74 { 75 Debug.Log("ファイルオープンエラー"); 76 } 77 finally 78 { 79 if (fileStream != null) 80 { 81 fileStream.Close(); 82 } 83 } 84 } 85 86 public void Load() 87 { 88 bf = new BinaryFormatter(); 89 fileStream = null; 90 91 try 92 { 93 // ファイルを読み込む 94 fileStream = File.Open(Application.dataPath + "/filedata.dat", FileMode.Open); 95 // 読み込んだデータをデシリアライズ 96 Data data = bf.Deserialize(fileStream) as Data; 97 //inputField.text = data.dataText; 98 } 99 catch (FileNotFoundException e1) 100 { 101 Debug.Log("ファイルがありません"); 102 } 103 catch (IOException e2) 104 { 105 Debug.Log("ファイルオープンエラー"); 106 } 107 finally 108 { 109 if (fileStream != null) 110 { 111 fileStream.Close(); 112 } 113 } 114 115 } 116 117 // 保存するデータクラス 118 [Serializable] 119 class Data 120 { 121 public string dataText; 122 } 123}
###試したこと
41行目を消しても42行目に、42行目を消しても43行目にエラーメッセージが出てくるのでその3行がエラーの原因だと思います。
回答2件
あなたの回答
tips
プレビュー