AssetScript

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