ScriptedImporter の実装
v0.68.0
以降 の glb/gltf editor importer
と VRM-1.0 editor importer
の実装で使用している ScriptedImporter に関して。
VRM-1.0
の実装と拡張子がぶつかってしまうのでVRM-0.x
へのScriptedImporter
実装はしません
ScriptedImporter 採用の利点
Texture の Asset化 が楽
AssetPostprocessor
だと普通の方法では実装できない Texture のバイト列を出力して Asset 化して、
これを参照する Material をアセット化するということが、
ScriptedImporter.GetExternalObjectMap
により無理をせずに実装できます。
UniVRM では抜け道として
EditorApplication.delayCall
を使用しています。
Import 設定を作れる
ScriptedImporter
を継承したクラスの public member
や [SerializeField]
に情報を保存できます。
// 例
[ScriptedImporter(1, "cube")]
public class CubeImporter : ScriptedImporter
{
public float m_Scale = 1; // これを Asset の Inspector で変更して Apply すると、新しい設定で再importできる
// 省略
}
ForceText 時に import が低速化するのを回避できる
ScriptedImporter
の SubAsset にすることで、 mesh
などがテキスト(yaml)で Asset 化されることを回避できます。
巨大なアセットで差が出ます。
ScriptedImporter 実装
TODO: ExternalObjectMap の扱い