新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。Unityエディタ拡張AnimationEventはプログラマーとアーティストの作業分担に役立つ機能ですが、AnimationEventまわりでエラーが起きた時に、正しくEventが設定されているか、バリデーションをかけたい時があると思います。今回非常に遠回りをしちゃったので記事化しています。遠回りverから.animファイル自体を解析して取得する方法です。適当にAnimationEventを設定したAnimationClip(Test.anim)を用意し、テキストエディタで開きます。※シリアライズされたオブジェクトはYAML形式のテキストになります。するとテキスト終盤に以下のようなm_Eventsという配列ブロックが出てきます。※これがシリアライズされたAnimationEventです。0m_Eventsの中身を解析すればAnimationEventの設定有無をチェックできます。これをどうやって取得するか、解説していきます。Test.animをシリアライズオブジェクトにしますシリアライズオブジェクトにすることで、APIとして公開されているものではない、シリアライズ状態のオブジェクトを取得する事ができるようになります。Debug.Log(e.FindPropertyRelative("functionName").stringValue);}上記のようにFindProperty関数を使用して地道に各プロパティを参照していきます。近道verなんとeventsプロパティで簡単にAnimationEvent配列を取得できます。関数名が設定されていない場合は空文字が返却されるので、そこでバリデーションをかければOKかと。まとめAPIとして提供されていることに早く気付けばよかったわけですが、シリアライズオブジェクトにすれば(Unity.Objectであれば)、どんなプロパティも解析できるということが分かったことは大きな収穫だったかなと思います。この方法を使えば、隠された機能をゴニョゴニョすることが可能になるため、とても便利なEditor拡張作れるようになるのではないでしょうか。Textにする必要があります。注意2シリアライズされたテキスト内容はUnityのバージョンアップによって変更される可能性があるということを留意すべきかと思います。安藤さんの『Unityエディター拡張』https://kyusyukeigo.booth.pm/items/1284041000円でこの内容はコスパ良すぎです。AnimationClipに設定されたAnimationEventを取得する方法Tweet読者になるボタンを押して貰えるととてもがんばれます。大庭俊介(bao_bao)渋谷のUnityエンジニア。スマホゲーム作って生活しています。設計、組み込み、演出一通りを自分1人で完結して作るのが得意です。よろしければTwitterフォローお願いします。(@ohbashunsuke)株式会社サムザップでUnityエンジニアとしてスマホゲーム作っています。(1)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。