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を作るのはめんどくさい・・・という時に使えるかもしれません。