回答編集履歴
7
代替案の追加
test
CHANGED
@@ -111,3 +111,15 @@
|
|
111
111
|
具体的な方法やコード等が分からなければ聞いてもらえれば後ほど追加でお答えするとして,
|
112
112
|
|
113
113
|
その前にまずはセーブデータの扱い方について,ゲームデータと切り分けて考えてみてもらうことは可能でしょうか?
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
※ 質問内容から少しそれますが,
|
120
|
+
|
121
|
+
StreamReaderの代わりにFile.ReadAllText,StreamWriterの代わりにFile.WriteAllTextというものもあります.これらはファイルをCloseする必要がありませんし(ストリーミングしないため),使用方法もより単純です.
|
122
|
+
|
123
|
+
CSVファイルにこだわる理由は分かりませんが,セーブが目的なのであれば,UnityにはPlayerPrefsという仕組みが用意されており,これを使用すればファイル読み書きを気にすることなくセーブが実装出来ます.
|
124
|
+
|
125
|
+
|
6
誤りの修正
test
CHANGED
@@ -48,11 +48,17 @@
|
|
48
48
|
|
49
49
|
Resources.Loadはファイルの読み込みは出来ますが,保存はできません.
|
50
50
|
|
51
|
+
さらにマニュアルによるとResourcesフォルダ内のアセットしか読み込めないようです.
|
52
|
+
|
53
|
+
(http://docs.unity3d.com/ja/current/Manual/LoadingResourcesatRuntime.html)
|
54
|
+
|
55
|
+
したがってResourcesフォルダ外のセーブデータフォルダのファイルを読み込むにはStreamReaderを使用する必要があると思います.
|
56
|
+
|
51
57
|
保存にはStreamWriterを使用しなければなりません.
|
52
58
|
|
53
59
|
流れとしては,
|
54
60
|
|
55
|
-
・
|
61
|
+
・StreamReaderで既存のセーブデータファイルがあれば開く
|
56
62
|
|
57
63
|
・内容を読み込み内容を一旦変数に書きうつして閉じる
|
58
64
|
|
@@ -86,7 +92,7 @@
|
|
86
92
|
|
87
93
|
読み込むことだけを考えれば,StreamReaderとResource.Loadは,どちらも読み込み機能しかありませんので,どちらでも構いません.
|
88
94
|
|
89
|
-
ただし書き込みにはStreamWriterを使わなければなりません
|
95
|
+
ただし書き込みにはStreamWriterを使わなければなりませんし,前述のようにResourcesフォルダ外であればStreamReaderでなければなりません.
|
90
96
|
|
91
97
|
|
92
98
|
|
@@ -98,9 +104,7 @@
|
|
98
104
|
|
99
105
|
その為に,プラットフォームにあわせてパスが勝手に変わってくれるApplication.persistentDataPathが用意されているので,それを使用する他ありません.
|
100
106
|
|
101
|
-
|
107
|
+
プラットフォームが変わればApplication.persistentDataPathが変わるので,StreamReaderを使うしかないと思います.
|
102
|
-
|
103
|
-
|
104
108
|
|
105
109
|
|
106
110
|
|
5
補足
test
CHANGED
@@ -72,7 +72,11 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
|
75
|
+
読み込んだファイルと同じファイルパスで保存すれば,場所を変えずに保存できます.
|
76
|
+
|
77
|
+
(読み込み時にファイルを開いたままCloseしない状態だと書き込めないという実装上の注意点はありますが.)
|
78
|
+
|
79
|
+
今回の肝は3つ目だと思うので,そちらの回答を見て下さい.
|
76
80
|
|
77
81
|
|
78
82
|
|
4
見やすさの向上
test
CHANGED
@@ -68,7 +68,7 @@
|
|
68
68
|
|
69
69
|
上記を踏まえて質問の回答ですが,
|
70
70
|
|
71
|
-
>・ファイル場所を変えずにCSVを更新する方法はあるのか?
|
71
|
+
> ・ファイル場所を変えずにCSVを更新する方法はあるのか?
|
72
72
|
|
73
73
|
|
74
74
|
|
@@ -76,7 +76,7 @@
|
|
76
76
|
|
77
77
|
|
78
78
|
|
79
|
-
>・Resource.Loadのパスは相対パスで、StreamRenderは絶対パスで指定しなければならないが、どちらにあわせれば良いのか?(私的にはResources.Loadを使いたい)
|
79
|
+
> ・Resource.Loadのパスは相対パスで、StreamRenderは絶対パスで指定しなければならないが、どちらにあわせれば良いのか?(私的にはResources.Loadを使いたい)
|
80
80
|
|
81
81
|
|
82
82
|
|
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
>・プラットフォーム関係なくCSVを更新するには?(できればResources.Loadに沿ってやりたい)
|
89
|
+
> ・プラットフォーム関係なくCSVを更新するには?(できればResources.Loadに沿ってやりたい)
|
90
90
|
|
91
91
|
|
92
92
|
|
3
オブジェクト名修正
test
CHANGED
@@ -92,7 +92,7 @@
|
|
92
92
|
|
93
93
|
これを考えるならば,前提としてファイルの場所が「どのプラットフォームでも書き換え可能な場所」でなければなりません.
|
94
94
|
|
95
|
-
その為に,プラットフォームにあわせてパスが勝手に変わってくれるApplication.persistentPathが用意されているので,それを使用する他ありません.
|
95
|
+
その為に,プラットフォームにあわせてパスが勝手に変わってくれるApplication.persistentDataPathが用意されているので,それを使用する他ありません.
|
96
96
|
|
97
97
|
Resources.LoadはUnity管理のアセットを読み込むもの(のはず)なので,この場合StreamReaderを使用する事になるのではないかと思います.(後ほど確認してみようと思います)
|
98
98
|
|
2
追記
test
CHANGED
@@ -42,23 +42,61 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
+
|
46
|
+
|
45
|
-
|
47
|
+
実装について少し触れますが,
|
46
48
|
|
47
49
|
Resources.Loadはファイルの読み込みは出来ますが,保存はできません.
|
48
50
|
|
49
|
-
保存にはStream
|
51
|
+
保存にはStreamWriterを使用しなければなりません.
|
50
52
|
|
51
53
|
流れとしては,
|
52
54
|
|
53
|
-
・Resources.LoadもしくはStream
|
55
|
+
・Resources.LoadもしくはStreamReaderで既存のセーブデータファイルを開く
|
54
56
|
|
55
57
|
・内容を読み込み内容を一旦変数に書きうつして閉じる
|
56
58
|
|
57
59
|
・(書き写した変数の中身を編集する)
|
58
60
|
|
59
|
-
・Stream
|
61
|
+
・StreamWriterでセーブデータファイルを開いて内容を書き込んで閉じる.
|
60
62
|
|
61
63
|
となります.
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
上記を踏まえて質問の回答ですが,
|
70
|
+
|
71
|
+
>・ファイル場所を変えずにCSVを更新する方法はあるのか?
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
どのプラットフォームでも書き換え可能な場所にセーブデータフォルダを作って,そこの中であれば場所を変えずに更新する方法はあります.
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
>・Resource.Loadのパスは相対パスで、StreamRenderは絶対パスで指定しなければならないが、どちらにあわせれば良いのか?(私的にはResources.Loadを使いたい)
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
読み込むことだけを考えれば,StreamReaderとResource.Loadは,どちらも読み込み機能しかありませんので,どちらでも構いません.
|
84
|
+
|
85
|
+
ただし書き込みにはStreamWriterを使わなければなりませんので,パスの形式を合わせるのであればStreamReaderを使用する方が一致して良いと思います.
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
>・プラットフォーム関係なくCSVを更新するには?(できればResources.Loadに沿ってやりたい)
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
これを考えるならば,前提としてファイルの場所が「どのプラットフォームでも書き換え可能な場所」でなければなりません.
|
94
|
+
|
95
|
+
その為に,プラットフォームにあわせてパスが勝手に変わってくれるApplication.persistentPathが用意されているので,それを使用する他ありません.
|
96
|
+
|
97
|
+
Resources.LoadはUnity管理のアセットを読み込むもの(のはず)なので,この場合StreamReaderを使用する事になるのではないかと思います.(後ほど確認してみようと思います)
|
98
|
+
|
99
|
+
|
62
100
|
|
63
101
|
|
64
102
|
|
1
タグ修正
test
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
> 解禁情報や成長過程などのデータを管理したいと思ったからです。
|
6
|
+
|
7
|
+
|
6
8
|
|
7
9
|
つまりセーブデータということですね?
|
8
10
|
|