コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity 4.5 の気になる新機能まとめ

Unity 4.5 で使える気づきにくい機能を紹介したブログ記事 - 強火で進め

Unity 4.5 が公開されてから 2 ヶ月ほど経ちましたが
調べてみたら意外と知らない機能が追加されていることがわかったので
気になった新機能をまとめてみました

Hierarchy ビューのオブジェクトの並び替え

Unity 4.5 以前のバージョンでは Hierarchy のオブジェクトは
名前順で自動的に並び替えが行われましたが
Unity 4.5 では自分でオブジェクトの順番を並び替えることができます

f:id:baba_s:20140726140108g:plain

HeaderAttribute

HeaderAttribute を使用すると Inspector ビューにテキストを表示できます

using UnityEngine;

public class HeaderTest : MonoBehaviour
{
    [Header("体力")]
    public int health = 0;
    public int maxHealth = 100;
    
    [Header("防御力")]
    public int shield = 0;
    public int maxShield = 0;
}

f:id:baba_s:20140726140140p:plain

Unity - Scripting API: HeaderAttribute

TooltipAttribute

変数に TooltipAttribute を適用すると
Inspector ビューで変数にカーソルを合わせた時に説明文を表示させることができます

using UnityEngine;

public class TooltipTest : MonoBehaviour
{
    [Tooltip("health には 0 から 100 の値を設定してください")]
    public int health = 0;
}

f:id:baba_s:20140726140234p:plain

Unity - Scripting API: TooltipAttribute

ContextMenuItemAttribute

変数に ContextMenuItemAttribute を適用すると
Inspector ビューで右クリックされた時のメニューを作成できます
変数の値を初期化したい時などに役立ちます

using UnityEngine;

public class ContextMenuItemTest : MonoBehaviour
{
    [ContextMenuItem("値をリセットします", "resetTheValue")]
    public float TheValue = 42;
    
    private void resetTheValue()
    {
        TheValue = 42;
    }
}

f:id:baba_s:20140726140243p:plain

Unity - Scripting API: ContextMenuItemAttribute

SpaceAttribute

変数に SpaceAttribute を適用すると Inspector ビューに空白を作ることができます

using UnityEngine;

public class SpaceTest : MonoBehaviour
{
    public int health = 0;
    public int maxHealth = 100;
    
    [Space(10)]
    
    public int shield = 0;
    public int maxShield = 0;
}

f:id:baba_s:20140726140251p:plain

Unity - Scripting API: SpaceAttribute

UNITY_PRO_LICENSE シンボル

UNITY_PRO_LICENSE シンボルを使用すると
開発環境が Unity Pro ライセンスかどうかを判定できます

// Unity Pro ラインセンスかどうかを判定します
#if UNITY_PRO_LICENSE

    // ...

#else

    // ...

#endif

GetComponentsInParent 関数

GameObject クラスと Component クラスに GetComponentsInParent 関数が追加されました
ジェネリックで取得したいコンポーネントの型を指定します
引数に true を渡すと非アクティブなオブジェクトも取得の対象にできます

// ゲームオブジェクトまたはその親から Transform をすべて取得します
var result = gameObject.GetComponentsInParent<Transform>();

// ゲームオブジェクトまたはその親(非アクティブも含む)から Transform をすべて取得します
var result = gameObject.GetComponentsInParent<Transform>(true);

備考

他にも Unity 4.5 に関する記事を書かれているサイト様を紹介しておきます

独断と偏見で選ぶ、Unity 4.5アップデート注目ポイント - テラシュールブログ
Unity 4.5 の New Hierarchy Window sorting について - ちなみに
http://mobiletou.ch/2014/06/unity-4-5-%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%9F-wheel-joint-2d-%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9
Interesting things in Unity 4.5 you probably didn't know about