概要
「GameObject」メニューにゲームオブジェクトを作成するメニューを追加する場合、
「GameObjectUtility.SetParentAndAlign」を必ず呼び出し、
親を設定し、子に同じレイヤーと位置を与えます。また、「Undo.RegisterCreatedObjectUndo」を呼び出して作成を取り消し、
新しくオブジェクトを生成するときの Undo 操作を登録します。さらに、「Selection.activeObject」に
新しく作成したオブジェクトを設定する必要があります。「GameObject」メニューに自作のメニューを追加する場合、
他の GameObject 作成メニューとグループ化する必要があることに注意してください。
これは、優先度を「10」に設定することで実現できます。優先度が設定されていないものは、
デフォルトの「1000」ではなく「10」が優先されることに注意してください。
using UnityEditor; using UnityEngine; public class Example { [MenuItem( "GameObject/ピカチュウ", false, 10 )] private static void Create( MenuCommand menuCommand ) { // ゲームオブジェクトを生成します var gameObject = new GameObject( "ピカチュウ" ); // 親を設定して同じレイヤーを継承します GameObjectUtility.SetParentAndAlign( gameObject, menuCommand.context as GameObject ); // Undo できるようにします Undo.RegisterCreatedObjectUndo( gameObject, "ピカチュウ" ); // 生成したゲームオブジェクトを選択状態にします Selection.activeObject = gameObject; } }