4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity】Hierarchyの並び順(Sibling)を上下するショートカット

Posted at

UnityのHierarchyの並び順(Sibling)を上下するショートカットを作った。
ドラッグアンドドロップでも移動は出来るが狙った位置に移動できなかったり、階層が変わってしまったりしてイラッとしていた。
ショートカットにより瞬時に移動できる。

使い方

Editorフォルダ内にUniSiblingChanger.csを入れる。
標準では以下にキーを割り当てている。
Ctrl(Cmd) + Shift + "+" : 下(手前)に移動
Ctrl(Cmd) + Shift + "*" : 上(奥)に移動

Ctrl + Shift + "-"は既にショートカットが割り当てられていた。

コード


using UnityEditor;
using System.Linq;

/// <summary>
/// Siblingを上下に移動させるエディタ拡張
/// </summary>
public class UniSiblingChanger : Editor
{

    /// <summary>
    /// Siblingを上げ、前方に移動する
    /// </summary>
    [MenuItem("GameObject/Set to Next Sibling %#+")]
    static void SetToNextSibling()
    {
        ChangeSibling(1);
    }

    /// <summary>
    /// Siblingを下げ、後方に移動する
    /// </summary>
    [MenuItem("GameObject/Set to Previous Sibling %#*")]
    static void SetToPreviousSibling()
    {
        ChangeSibling(-1);
    }

    /// <summary>
    /// Siblingを移動量変える
    /// </summary>
    /// <param name="count">移動量</param>
    static void ChangeSibling(int count)
    {
        var objects = Selection.gameObjects;
        if(objects == null) {
            return;
        }
        // ソート条件
        var desc = count > 0 ? -1 : 1;
        // 並び替え
        foreach(var obj in objects.OrderBy(x => desc * x.transform.GetSiblingIndex())) {
            var index = obj.transform.GetSiblingIndex();
            obj.transform.SetSiblingIndex(index + count);
        }
    }
}

仕組み

Inspectorで選択中のオブジェクトはSelection.gameObjectsで取得できる。
transform.GetSiblingIndex()で階層内の順番を取得する。
transform.SetSiblingIndex()で階層内の順番を設定する。

GitHub

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?