teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

7

文章の修正・画像追加

2021/08/15 14:59

投稿

Matsuri_
Matsuri_

スコア15

title CHANGED
File without changes
body CHANGED
@@ -20,6 +20,9 @@
20
20
  ですが、下記のように、File.Deleteメソッドを行っても、
21
21
  Unityフォルダ内にあるJsonファイルが消えていません。
22
22
  特にエラーメッセージも出ません。
23
+ ![イメージ説明](1b240750a4e0d334b5c758a01c721e7a.png)
24
+ 現在、ニューゲームするときは、Assetsファイルから右クリックで削除してから
25
+ 始める・・・というようなことをしています。
23
26
 
24
27
  ### 該当のソースコード
25
28
 

6

コードの追加

2021/08/15 14:59

投稿

Matsuri_
Matsuri_

スコア15

title CHANGED
File without changes
body CHANGED
@@ -24,6 +24,10 @@
24
24
  ### 該当のソースコード
25
25
 
26
26
  ```GameManager
27
+
28
+ static SaveDate SaveDatedayo = new SaveDate(); //保存場所
29
+ public int money;
30
+
27
31
  public void Awake()
28
32
  {
29
33
  DoLoad();

5

文章の修正

2021/08/15 12:44

投稿

Matsuri_
Matsuri_

スコア15

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,9 @@
17
17
  セーブデータを初期化する方法がわからず、困っています。
18
18
  Jsonファイルの削除(もしくは初期値に書き換える)を行って、
19
19
  データを引き継がずに最初から始める、という処理をしたいです。。
20
- ですが、File.Deleteを行っても、消えていません。
20
+ ですが、下記のように、File.Deleteメソッドを行っても、
21
+ Unityフォルダ内にあるJsonファイルが消えていません。
22
+ 特にエラーメッセージも出ません。
21
23
 
22
24
  ### 該当のソースコード
23
25
 

4

内容修正

2021/08/15 12:11

投稿

Matsuri_
Matsuri_

スコア15

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  Unityにてゲームを作っています。
4
4
  ゲームクリア後に再び最初からゲームを始める際、
5
5
  リスタートボタンを押したら、
6
- セーブデータ初期化→ニューゲーム
6
+ セーブデータ初期化(Jsonファイルの削除など)→ニューゲーム
7
7
  の実装をしたいです。
8
8
 
9
9
  現在、Jsonファイルをセーブデータとして使っています。
@@ -15,8 +15,9 @@
15
15
  ### 発生している問題・エラーメッセージ
16
16
 
17
17
  セーブデータを初期化する方法がわからず、困っています。
18
- シーン再読み込みをた際書き込んだ変数のデータが
18
+ Jsonファイル削除(もくは初期値に書き換える)を行って、
19
+ データを引き継がずに最初から始める、という処理をしたいです。。
19
- そのまま残ってしまっていま
20
+ ですが、File.Deleteを行っても、消えていません
20
21
 
21
22
  ### 該当のソースコード
22
23
 
@@ -27,18 +28,18 @@
27
28
  money = SaveDatedayo.money;//お金
28
29
  }
29
30
  //・・・中略・・・
30
- public void DoSave()
31
+ public void DoSave() //セーブ処理
31
32
  {
32
33
  SaveDatedayo.money = money; //お金
33
34
       Save(SaveDatedayo);
34
35
  }
35
36
 
36
- public void DoLoad()
37
+ public void DoLoad() //ロード処理
37
38
  {
38
39
  SaveDatedayo = Load();
39
40
  }
40
41
 
41
- public void Save(SaveDate SaveDatedayo)
42
+ public void Save(SaveDate SaveDatedayo)//セーブのためにJsonファイル書き出し
42
43
  {
43
44
  StreamWriter writer;
44
45
 
@@ -51,7 +52,7 @@
51
52
 
52
53
  }
53
54
 
54
- public SaveDate Load()
55
+ public SaveDate Load()//ロードのためにJsonファイル読み込み
55
56
  {
56
57
  if (File.Exists(Application.dataPath + "/savedata.json"))
57
58
  {
@@ -70,7 +71,7 @@
70
71
 
71
72
  }
72
73
 
73
- public void PushRestartButton()
74
+ public void PushRestartButton()//リスタート(ニューゲーム)ボタン
74
75
  {
75
76
  if (File.Exists(Application.dataPath + "/savedata.json"))
76
77
  {

3

文章の修正

2021/08/15 11:58

投稿

Matsuri_
Matsuri_

スコア15

title CHANGED
File without changes
body CHANGED
@@ -88,5 +88,9 @@
88
88
  (が、削除されません)
89
89
  セーブとロードはうまくいっています。
90
90
 
91
+ 変数の手動での書き換えによる初期化(SaveDatedayo.money = 0など)
92
+ もやろうとしましたが、変数の数が多いので、
93
+ この方法では大変だなと思っています。
94
+
91
95
  伝わりにくいかもしれませんが、教えて頂ければ幸いです。
92
96
  よろしくお願いします。

2

タイトルを変更しました

2021/08/14 14:42

投稿

Matsuri_
Matsuri_

スコア15

title CHANGED
File without changes
body CHANGED
@@ -1,41 +1,92 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
  Unityにてゲームを作っています。
4
- ゲームクリア後に再び最初からゲームを始める際
4
+ ゲームクリア後に再び最初からゲームを始める際、
5
+ リスタートボタンを押したら、
5
- セーブデータ初期化についての質問です。
6
+ セーブデータ初期化→ニューゲーム
7
+ の実装をしたいです。
6
8
 
7
- Jsonファイルをセーブデータとして使っています。
9
+ 現在、Jsonファイルをセーブデータとして使っています。
8
10
  書き出しと読み込みは、StreamReaderの機能を使っています。
11
+ GameManagerクラスのスクリプトにある変数の値を、
12
+ SaveDateクラスのスクリプトにそのままコピーして、
13
+ それをJsonファイルにしています。
9
14
 
10
15
  ### 発生している問題・エラーメッセージ
11
16
 
12
- セーブデータを初期化する
17
+ セーブデータを初期化する方法がわからず、困っています。
18
+ シーンの再読み込みをした際に、書き込んだ変数のデータが
19
+ そのまま残ってしまっています。
13
20
 
14
21
  ### 該当のソースコード
15
22
 
16
- キャラクターに付与しているスクリプトは
23
+ ```GameManager
17
- void Update()
24
+ public void Awake()
18
25
  {
19
-
26
+ DoLoad();
27
+ money = SaveDatedayo.money;//お金
28
+ }
29
+ //・・・中略・・・
30
+ public void DoSave()
31
+ {
32
+ SaveDatedayo.money = money; //お金
33
+      Save(SaveDatedayo);
34
+ }
35
+
36
+ public void DoLoad()
37
+ {
20
- if (Input.GetKey(KeyCode.W))
38
+ SaveDatedayo = Load();
39
+ }
40
+
41
+ public void Save(SaveDate SaveDatedayo)
42
+ {
43
+ StreamWriter writer;
44
+
45
+ string jsonstr = JsonUtility.ToJson(SaveDatedayo);
46
+
47
+ writer = new StreamWriter(Application.dataPath + "/savedata.json", false);
48
+ writer.Write(jsonstr);
49
+ writer.Flush();
50
+ writer.Close();
51
+
52
+ }
53
+
54
+ public SaveDate Load()
55
+ {
56
+ if (File.Exists(Application.dataPath + "/savedata.json"))
21
57
  {
58
+ string datastr = "";
59
+ StreamReader reader;
60
+ reader = new StreamReader(Application.dataPath + "/savedata.json");
61
+ datastr = reader.ReadToEnd();
62
+ reader.Close();
63
+
22
- transform.Translate(0, 4.5f * Time.deltaTime, 0);
64
+ return JsonUtility.FromJson<SaveDate>(datastr);
23
65
  }
24
66
 
67
+ SaveDate SaveDatedayo2 = new SaveDate();
68
+
69
+ return SaveDatedayo2;
70
+
71
+ }
72
+
25
- if (Input.GetKey(KeyCode.S))
73
+ public void PushRestartButton()
74
+ {
75
+ if (File.Exists(Application.dataPath + "/savedata.json"))
26
76
  {
27
- transform.Translate(0, -4.5f * Time.deltaTime, 0);
77
+ File.Delete(Application.dataPath + "/savedata.json");
28
78
  }
79
+ Scene ThisScene = SceneManager.GetActiveScene();
80
+ SceneManager.LoadScene(ThisScene.name);
81
+ }
29
- ・・・・
82
+ ```
30
83
 
31
- というような形です
32
-
33
84
  ### 試したこと
85
+ 上記では、リスタートボタンにつける
86
+ PushRestartButtonメソッドの中で、
87
+ 既存のJsonセーブデータファイルを削除しようとしています。
88
+ (が、削除されません)
89
+ セーブとロードはうまくいっています。
34
90
 
35
- ボタンを非アクティブにすれば選択不可能になることは
36
- わかっていますが、
37
- その方法だとやりたいことが実現できません。
38
- (キャラを動かしながら、メニュー、コマンド選択がしたいです)
39
- 調べても出てこず、困っています。
40
-
41
- 伝わりにくいかもしれませんが、よろしくお願します。
91
+ 伝わりにくいかもしれませんが、教えて頂ければ幸す。
92
+ よろしくお願いします。

1

タイトルを変更しました

2021/08/14 14:41

投稿

Matsuri_
Matsuri_

スコア15

title CHANGED
@@ -1,1 +1,1 @@
1
- Jsonセーブデータの削除とニューゲーム
1
+ Unity Jsonセーブデータの削除とニューゲーム
body CHANGED
File without changes