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 の扱い