この API を使用して、ミップマップストリーミングシステム のデフォルト設定をオーバーライドしたり、よりきめ細かい制御を行うことができます。
このページには以下の情報が含まれています。
このシステムに関する一般的な情報については、ミップマップストリーミングシステム を参照してください。
ミップマップストリーミングシステムが自動的にデフォルト設定を管理する一方で、API を使って特定の状況に応じた動作をオーバーライドすることができます。
これは、Unity が特定のテクスチャを完全にロードする必要がある場合に便利です。例えば、大きな距離をすばやく移動するゲームオブジェクトに関連する場合、または瞬間的なカメラカットを使用する場合などです。
テクスチャのミップマップストリーミングを有効にして制御するには、以下のプロパティを使用します。
ミップマップストリーミングは、テクスチャのミップレベルをミップマップストリーミングの Memory Budget (メモリバジェット) に収まるように自動的に縮小します。テクスチャの Mip Map Priority (ミップマップ優先順位) の数字はおおむね Memory Budget のミップマップオフセットに当たります。例えば、優先順位が 2 の場合、ミップマップストリーミングシステムは、優先順位が 0 の他のテクスチャよりミップレベルが 2 つ高いミップマップを使用しようとします。負の値も有効です。これを行うことができない場合は、Memory Budget に合うように低いミップレベルを使用します。
これらのプロパティは、実行時には読み取り専用になります。
ランタイムに発生する処理を制御するには、以下の静的プロパティを使用します。
ある場所から別の場所へ切り替えるとき、ミップマップストリーミングシステムは、必要なテクスチャを Unity にストリーミングする時間が必要とします。無効にしたターゲットカメラ位置で事前ロードを起動させるには、ターゲットカメラの Streaming Controller コンポーネントで StreamingController.SetPreloading を呼び出します。終了時間を指定して、事前ロードフェーズを終了することができます。プリロードの終了時に自動的にカメラを有効にするには、スクリプトで activateCameraOnTimeout
フラグを true に設定します。カメラから新しいカメラに切り替えた後、そのカメラを無効にするには、disableCameraCuttingFrom
パラメーターとして無効にするカメラを渡します。
void StreamingController.SetPreloading(float timeoutSeconds=0.0f, bool activateCameraOnTimeout=false, Camera disableCameraCuttingFrom=null)
プリロード状態をキャンセルまたはクエリするには、以下のメソッドを使用します。
ミップマップストリーミングシステムが依然としてテクスチャをロードしているかどうかを判断するには、以下のプロパティをクエリできます。
カメラを有効にしてからプロパティがゼロ以外の値になるまでに、遅延があることに注意してください。この遅延は、ミップマップストリーミングシステムがタイムスライス処理でミップマップを計算するためです。このため、カメラカット中は、カット前に最低限待機する必要があります。テクスチャバジェットやシーンの動きは、連続したミップマップストリーミングを引き起こす可能性があります。そのため、カットするまでの最大時間を設定する必要があります。
特定テクスチャのミップレベルの計算をオーバーライドするには、Texture2D.requestedMipmapLevel を使用します。これは、その特定テクスチャの 0 から最大の範囲内で設定できる正確なミップレベルです。または、それより低い場合は Max Level Reduction 値を使用します。0 が最高解像度ミップレベルです。
要求されたミップレベルがロードされているかどうかを確認するには、Texture2D.IsRequestedMipmapLevelLoaded を使用します。
リクエストしたミップレベルでのオーバーライドを止め、システムにミップレベルを計算させたい場合は、Texture2D.ClearRequestedMipmapLevel を使用して値をリセットします。
メッシュの UV 密度の推定値を取得するには、以下を使用します。
float Mesh.GetUVDistributionMetric(int uvSetIndex)
UV 分布メトリックを使用すると、カメラの位置に基づいて、必要なミップマップレベルを計算することができます。コードサンプルは Mesh.GetUVDistributionMetric を参照してください。
システムをオーバーライドしてすべてのミップを強制的にロードするには、Texture.streamingTextureForceLoadAll を使用します。
デバッグ用のビジュアライゼーションを作成するために使用するマテリアルプロパティで、テクスチャごとのストリーミング情報を取得するには、Texture.SetStomengTextureMaterialDebugProperties を使用します。
Texture.SetStreamingTextureMaterialDebugProperties を使用して、各テクスチャのストリーミングステータス情報をマテリアルプロパティに割り当てます。その後、シェーダーでこれらのプロパティを使用して、デバッ グの視覚化を行うことができます。
また、これらのプロパティを使用して、プロジェクト用のミップマップストリーミングプロファイリングおよびデバッグツールを作成することも可能です。
ミップマップストリーミングシステムが相互作用するテクスチャやレンダラーの数に関する情報を取得するには、以下のプロパティを使用します。
テクスチャのミップマップレベルに関する情報を取得するには、以下のプロパティを使用します。
マテリアルに割り当てられたテクスチャを取得および設定するには、以下を使用します。
マテリアルのすべてのテクスチャプロパティを取得するには、以下を使用します。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.