テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

ロードの待ち時間を短くする(その3/Resources.Load)

必要な部分のみ順次読み込むやり方について。

■Resources.Loadで読み込む

とりあえずこの手の手法でよく紹介されてるのが、
Resources.Loadで読み込む手法。

これは、ゲーム実行中にResourcesフォルダからファイルを読み込む
そんな機能。

読み込みは大体こんなかんじで行われる。

Texture2D texture = Resources.Load(filename) as Texture2D;

読み込める ファイルはResourcesフォルダ下ならOKで、
Resourcesフォルダが複数あってもうまい具合に読みこんでくれるみたい。

Unity: Resourcesフォルダが複数ある時の読み込みテスト(ハマケン100%開発)
http://hamken100.blogspot.jp/2012/04/unity-resources.html

名前でファイルを取得するので、スクリプトでリソースを管理したいときとかに便利。
下はResources.Loadを駆使して作られてる画面
スクリーンショット 2012-08-03 10.57.12
そんな事よりタッグフォースやろうぜ

■でかいファイルはゲームが止まる

Resources.Loadは便利な機能だけど、二つ問題がある。
一つは使用メモリの問題。これはキャッシュを開放してやれば解決する。

もう一つの問題は、この処理を非同期で実行することができない事。
色々調べて分かったけど、どうもResources.Loadを別スレッドに乗せて実行することが
出来ないらしい。

なので必然的に(大きい||大量なファイル)を読み込む際はゲームが停止する。

逆に言えば、細かくファイルを複数のタイミングに分けて読む分には
ゲームの停止時間は短くて済むかも。
ただ、その辺りの調整をかけると非常に面倒そうな気配がする。

最近のは出来るみたいです。テクスチャの分割ロードとかも

スクリプトを利用してシーン管理

テキストを使ってランタイムに制御しているゲームは
Resources.Loadを使うのに向いていると思う。

具体的にはアドベンチャーゲームや、STGのステージ構成等。
読み込む対象はリソース全般の読み込み。

というのも、
命名規則がしっかりしていれば、インスペクターを操作せずにステージが増やせるし、
次のステージみたいな今必要ない情報は省けるし、日本語も使える。

何が良いって、ADVシステムのシナリオにResources.Loadを使う場合、
キックする仕組みとADVシステムさえ作ってやれば、あとはフォルダ管理で済むところ。

名前参照もたまには便利。

Unityのリソースにテキストを格納する(Nanashi-soft)
http://blog.livedoor.jp/nanashisoft/archives/52479914.html



この記事書いたと思ったら消えていた。予約投稿は信用ならんね