LoginSignup
21
20

More than 5 years have passed since last update.

【Unity】Unite 2015「エディター拡張マニアクス 2015」レポート

Last updated at Posted at 2015-04-23

レポート一覧

講演ファイル

はじめに

Unity 5.1 ベースの話

スプライトアニメーションを題材としたエディター拡張の話

  • 従来のスプライトアニメーションの作成方法
    • Projectビューで複数のスプライトを選択してSceneビューにD&D
  • Unity5.1からは複数のスプライトを選択して右クリックして「Create/Animation」
    • AnimationCiipが作成されるがInspectorビューで中身を確認できない
      • InspectorビューをDebugモードにすると確認できる

CustomPreview属性

  • テクスチャやアニメーションの再生をプレビューする場所を拡張できる
[CustomPreview(typeof(AnimationClip))]
public class SpriteAnimationPreview : ObjectPreview
{
}
  • プレビューは複数のカスタムプレビューを持てる
    • タイトルの部分がドロップダウンメニューになる
    • ちょっと残念なところ
      • デフォルトで表示させるプレビューを設定できない

デフォルトプレビューをオフにする方法

[CustomEditor(typeof(AnimationClip))]
public class AnimationClipEditor : OverrideEditor
{
    public override bool HasPreviewGUI()
    {
        return false;
    }
}

Spriteアニメーションをスクリプトで作成する方法

  • ObjectReferenceKeyframe
    • Keyframeのオブジェクト参照版
    • float値の代わりにObjectを設定することができる
  • EditorCurveBinding
    • どのプロパティをアニメーションさせるかのキー
    • キーはシリアライズ可能なデータのみ
  • AnimationUtility.SetObjectReferenceCurve
    • 指定したAnimationClipの特定のキーに特定の値を設定する

AnimatorOverrideController

  • ステートマシンはそのままで戦士、格闘家、魔法使いのようにスプライトだけを変更したい時など
  • アニメーターコントローラーのアニメーションを上書きするオーバーライドコントローラー

オススメの機能

  • ReorderableList
    • 使うと配列が見やすくなる
  • AssetDatabase.GenerateUniqueAssetPath
    • 同名のアセットがあってはだめなのでユニークな名前にする
  • EditorApplication.delayCall
    • インスペクターアップデート時に呼び出されるデリゲート

ScriptableWizard

  • 対話形式でアセット作成・編集できる
  • 常に前にポップアップ
  • 状況に合わせてhelpやerrorを表示できる

Unity5の新機能

  • UnityEditor.InitializeOnLoadMethod
    • InitializeOnLoadのメソッド版
  • UnityEditor.Menu
    • メニューにチェックをつけるためのAPI
  • UnityEngine.HelpURLAttribute
    • はてなマークのジャンプ先のURLを変更するための機能
  • GUI.Scope
    • BeginHorizontalやEndHorizontalをIDisposableでラップしたもの

おまけ

  • SceneViewクラス
    • Editor.OnSceneではなく、グローバルなonSceneGUIDelegateがある
    • シーンビューを操作できる様々なAPIがある
  • PojectWindowUtilクラス
    • メニューからアセットを作成するときに使用されるAPI
    • ProjectWindowUtil.CreateAssetは覚えておくと絶対便利
  • ActiveEditorTrackerクラス
    • 現在インスペクターに表示されているEditorオブジェクトを管理するAPI
    • Editorオブジェクトを操作するときに便利
  • UnityStatsクラス
    • 現在の描画に関する情報などを取得するためのAPI
  • ComponentUtilityクラス
    • コンポーネントのコピーが行えるAPI
  • InternalEditorUtilityクラス
    • なんかいろいろ面白いAPIがあるクラス
      • タグやレイヤーの一覧が取得できたり
      • UnityのPreferenceフォルダのパスが取得できたり
      • オブジェクトをシリアライズできたり
21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20