【问题标题】:How to add gameobjects via script in the hierarchy in edit mode?如何在编辑模式下通过脚本在层次结构中添加游戏对象?
【发布时间】:2017-03-26 14:10:34
【问题描述】:

我想创建一个菜单项,它可以构建一个包含子项和组件的游戏对象。 我不能对整个对象使用预制件,因为我需要孩子是单独的预制件。

【问题讨论】:

    标签: unity3d unity-editor


    【解决方案1】:

    你可以这样使用:

    [MenuItem("YOUR_MENU_NAME/YOUR_SUBMENU_NAME/YOUR_METHOD_NAME %&n")]
    static void CreateAPrefab()
    {
        //Parent
        GameObject prefab = (GameObject)PrefabUtility.InstantiatePrefab(AssetDatabase.LoadAssetAtPath<Object>("Assets/Prefabs/TestPrefab.prefab"));
        prefab.name = "TestPrefab";
    
        if(Selection.activeTransform != null)
        {
            prefab.transform.SetParent(Selection.activeTransform, false);
        }
        prefab.transform.localPosition = Vector3.zero;
        prefab.transform.localEulerAngles = Vector3.zero;
        prefab.transform.localScale = Vector3.one;
    
        //Child 1
        GameObject prefabChild1 = (GameObject)PrefabUtility.InstantiatePrefab(AssetDatabase.LoadAssetAtPath<Object>("Assets/Prefabs/TestPrefabChild1.prefab"));
        prefabChild1.name = "TestPrefabChild";
    
        prefabChild1.transform.SetParent(prefab.transform, false);
        prefabChild1.transform.localPosition = Vector3.zero;
        prefabChild1.transform.localEulerAngles = Vector3.zero;
        prefabChild1.transform.localScale = Vector3.one;
    
        //Child2...
        //...
    
        Selection.activeGameObject = prefab;
    }
    

    不要忘记包含using UnityEditor; 并将脚本放在Editor/ 文件夹中,或者使用编辑器方法在部件周围使用#if UNITY_EDITOR / #endif。我还使用%&amp;n (Ctrl + Alt + N) 添加了MenuItem 的快捷方式。

    如果您需要更改构成实例化对象的预制件,您可以尝试在您的项目中检索它们(可能是繁重的操作,具体取决于您的项目),就像他们所做的 here 并显示一种清单,其中您可以在 EditorWindow 中选择作为子项所需的预制件。

    【讨论】:

    • 这正是我想要的。
    • 很高兴它有帮助!
    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    相关资源
    最近更新 更多