ScriptedImporterとMono C#コンパイラを使って、アセット自身に書いたインポート用のスクリプトからアセットをインポートする仕組みを作ってみました。C#をスクリプト的に扱い、アセットをプロシージャルに生成することができます。
https://github.com/takazerker/unity-assetscript
下のスクリプトを cube.assetscript としてプロジェクトに追加するとキューブのプレハブとしてインポートされます。
#using UnityEngine AddObjectToAsset("GameObject", GameObject.CreatePrimitive(PrimitiveType.Cube));
下はモデルファイルにコンポーネントを自動的にアタッチしてプレハブ化する例
#using UnityEngine var go = CopyAsset<GameObject>("SomeModel.fbx"); if (go) { go.AddComponent<BoxCollider>(); go.AddComponent<Rigidbody>(); AddObjectToAsset("GO", go); }
下は縞々のテクスチャを作る例
#using UnityEngine var tex = new Texture2D(32, 32); var pixels = tex.GetPixels(); for (var i = 0; i < pixels.Length; ++i) pixels[i] = new Color(i % 2, 0, 0); tex.SetPixels(pixels); AddObjectToAsset("Tex", tex);
GitHubリポジトリの方にはこれ以外にもサンプル用意してます。
アセットを作る流れを自動化したいけど、わざわざAssetPostprocessorやScriptedImporterを作るのはめんどくさい・・・という時に使えるかもしれません。