Unity ゲームのすべてのリソース データをファイルにダンプする関数を作成しようとしていますが、現在読み込まれているシーンから画面上のビデオ、オーディオ、スクリプト名、および画像をダンプすることができました。
テクスチャやマトリックス、ベクトル、int 値、float などのシェーダー データに対して同じことをしようとすると、行き詰まります。関数を使用してこれらの形成を取得できることを知っていMaterial.GetXXX
ます。
たとえば、現在、次のようなTexture
名前のテクスチャ タイプ プロパティを持つ標準シェーダーからメインを取得できます_MainTex
。
Material mat = gameObject.GetComponent<MeshRenderer>().material;
Texture mat1Tex = mat.GetTexture("_MainTex");
SaveTex(mat1Tex);
問題は、実行時にプロパティの値を取得する前に、プロパティの名前と、Texture、Matrix、Float、Color などのタイプを知る必要があることです。
サード パーティ ソースからの多くのシェーダーがプロジェクトに含まれていると予想されます。データを取得できるように、各シェーダーを手動で調べて、プロパティ名とタイプをコピーするのは複雑です。
関数で値を取得するために必要なシェーダー プロパティと型を取得する方法はありMaterial.GetXXX
ますか? これが不可能な場合、シェーダー データを個別にダンプする方法はありますか?
注:
これは保存機能ではなく、ゲームの状態を保存およびロードする方法を探していません。Unity ゲームの分析とトラブルシューティングに使用されるプラグインです。