回答編集履歴
2
番号について修正
answer
CHANGED
@@ -7,13 +7,13 @@
|
|
7
7
|
4. 一度全ファイルを解放。
|
8
8
|
5. 以後、必要になったら必要なファイルを読み込む。
|
9
9
|
|
10
|
-
4.、5. のような処理が入るのでしたら、
|
10
|
+
「4.、5.」 のような処理が入るのでしたら、
|
11
|
-
3. までの処理を行う単体のツールを作って、
|
11
|
+
「3.」 までの処理を行う単体のツールを作って、
|
12
12
|
その結果をファイルとして別途出力して、
|
13
13
|
ゲーム開始時にはそのファイルを読むようにすれば、
|
14
14
|
起動時間をかなり短縮できるのではないでしょうか?
|
15
15
|
|
16
|
-
2.の処理については、ファイルを切れ目なく読み込まず、
|
16
|
+
「2.」の処理については、ファイルを切れ目なく読み込まず、
|
17
17
|
適切な単位(適切なファイル数ないし行数)で短い sleep() などを入れて UI に処理を戻すようにすれば、
|
18
18
|
(例えばそこで進捗のアニメーションを表示したり、キャンセルボタンなどを検知する処理を入れれば)
|
19
19
|
よいと思います。
|
1
コメント指摘内容の反映
answer
CHANGED
@@ -1,26 +1,25 @@
|
|
1
|
+
MujinSekai さんが説明くださった目的について
|
1
|
-
|
2
|
+
説明しやすいように番号を振らせていただきました。
|
2
3
|
|
3
|
-
MujinSekai さんの最終的な目的は、ゲームとしてプレーヤが投げ出してしまわないような操作性を確保することだと思いますが、
|
4
|
-
|
4
|
+
1. ゲーム開始時に全てのファイルを読み込む。
|
5
|
+
2. その際、進捗のアニメーションを入れたい。
|
6
|
+
3. 全ファイルの数値から処理を行う。
|
7
|
+
4. 一度全ファイルを解放。
|
8
|
+
5. 以後、必要になったら必要なファイルを読み込む。
|
5
9
|
|
6
|
-
|
10
|
+
4.、5. のような処理が入るのでしたら、
|
11
|
+
3. までの処理を行う単体のツールを作って、
|
7
|
-
|
12
|
+
その結果をファイルとして別途出力して、
|
13
|
+
ゲーム開始時にはそのファイルを読むようにすれば、
|
14
|
+
起動時間をかなり短縮できるのではないでしょうか?
|
8
15
|
|
9
|
-
この二つに対する対策は別のものになります。
|
10
|
-
|
11
|
-
まず、1.の問題ですが、現在市販されているゲームの有名タイトルでも、
|
12
|
-
ロード時間がかなり長いもの(数分以上かかるもの)は存在しますが、フリーズ状態にはなりません。
|
13
|
-
|
16
|
+
2.の処理については、ファイルを切れ目なく読み込まず、
|
14
|
-
適切な単位(ファイルないし行)で短い sleep() などを入れて UI に処理を戻すようにすれば、
|
17
|
+
適切な単位(適切なファイル数ないし行数)で短い sleep() などを入れて UI に処理を戻すようにすれば、
|
15
18
|
(例えばそこで進捗のアニメーションを表示したり、キャンセルボタンなどを検知する処理を入れれば)
|
16
|
-
|
19
|
+
よいと思います。
|
20
|
+
Unity についてはあまりよくわからないのですが、おそらくマルチスレッド化などしていても、
|
17
|
-
|
21
|
+
ファイル読み込みを切れ目なく行ってしまうと、アニメーション処理などは止まってしまうと思われます。
|
18
|
-
フリーズ状態のとでは、ユーザーの印象は全く違うと思います。
|
19
22
|
|
20
|
-
次に 2.の読み込みに時間がかかることですが、
|
21
|
-
csvで4GBということは、データの内容にもよりもよりますが、
|
22
|
-
読み込み時のカンマと数字のパーシングの時間も無視できない量になってると思います。
|
23
|
-
|
23
|
+
データのバイナリ化については、独自のファイル形式を作る方法と、C#の シリアライズ化を使って、
|
24
|
-
また、1ファイル10MB で 4GB ということは、数百個のファイルがあるということですので、
|
25
|
-
|
24
|
+
バイナリシリアライズする方法があると思います。
|
26
|
-
|
25
|
+
どちらがより適切かは私にもよくわかりませんが。
|