Assetが生成された時にだけ処理を行う方法です。
AssetPostprocessorのタイミングで処理を行いたいものの、
リインポートや移動のときには処理をスキップしたい場合に使えます。
Unity2018.2.17
ソースコード
早速ですがソースコードです。
public class ExampleAssetPostprocessor : AssetPostprocessor { private void OnPreprocessAsset() { var guid = AssetDatabase.AssetPathToGUID(assetPath); var asset = AssetDatabase.LoadAssetAtPath<Object>(assetPath); // Assetがまだ生成されていなかったら新規作成とみなす if (!string.IsNullOrEmpty(guid) && asset == null) { // 新規生成時の処理 // インポート中にやったらいけない処理は遅延させる EditorApplication.delayCall = () => { } } } }
AssetPostprocessor.OnPreprocessAsset()
時点でAssetをロードすると、
既にAssetが存在する場合には正常に取得できますが初回作成時にはnullが入ってきます。
これを利用して、Assetがロードできなかったら初回作成であるとみなしています。