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

回答編集履歴

2

番号について修正

2021/01/09 07:04

投稿

kozuchi
kozuchi

スコア1193

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

コメント指摘内容の反映

2021/01/09 07:04

投稿

kozuchi
kozuchi

スコア1193

answer CHANGED
@@ -1,26 +1,25 @@
1
+ MujinSekai さんが説明くださった目的について
1
- 実働るサンプルプログラムを載せる主義ですが、ちょっと実証に時間がかりそなので、一般論書きます。実測をしていないめ、た、私の知らない C#やUnity の実装上の理由で以下の内容が成り立たない場合もあるかもれませんがご参考まで
2
+ 説明しやいよに番号振らせていただきまし
2
3
 
3
- MujinSekai さんの最終的な目的は、ゲームとしてプレーヤが投げ出してしまわないような操作性を確保することだと思いますが、
4
- ご質問拝見したところ問題は2点あると思います
4
+ 1. ゲーム開始時に全てのファイル読み込む
5
+ 2. その際、進捗のアニメーションを入れたい。
6
+ 3. 全ファイルの数値から処理を行う。
7
+ 4. 一度全ファイルを解放。
8
+ 5. 以後、必要になったら必要なファイルを読み込む。
5
9
 
6
- 1.半分フリーズしたような状態になこと
10
+ 4.、5. のような処理が入のでしたら、
11
+ 3. までの処理を行う単体のツールを作って、
7
- 2.読み込みに時間がかかるこ
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
+ どちらがより適切は私にもよせんが