Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

レポート一覧

講演ファイル

http://japan.unity3d.com/unite/unite2015/files/DAY2_1400_room2_Ando.pdf

はじめに

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フォルダのパスが取得できたり
      • オブジェクトをシリアライズできたり
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした