如何创建对象作为Canvas的父对象

本文关键字:对象 Canvas 创建对象 | 更新日期: 2023-09-27 17:58:30

我正试图为我的unity项目创建一个新元素,但我需要unity将我的整个对象呈现为UI对象,我该如何实现这一点。到目前为止我的当前脚本。

using UnityEditor;
using UnityEngine;
public class OptionSwitch : MonoBehaviour {
    [MenuItem ("GameObject/UI/Switch")]
    static void Switch(){
        GameObject go = new GameObject("switch");
        go.transform.parent = Selection.activeTransform;
        go.transform.localPosition = Vector3.zero;
    }
}

它将是一个选项开关,文本框两侧都有一个按钮,指示活动选项。

我做了更多的研究并提出了这个代码。

using UnityEditor;
using UnityEngine;
public class OptionSwitch : MonoBehaviour {
    [MenuItem ("GameObject/UI/Switch")]
    static void Switch(){
        if (GameObject.Find ("Canvas") != null) {
            // Define Components
            GameObject Canvas   = GameObject.Find("Canvas");
            GameObject Switch   = new GameObject("Switch");
            GameObject Previous = new GameObject("Previous Button");
            GameObject Next     = new GameObject("Next Button");
            GameObject Text     = new GameObject("Textbox");

            // Place Switch
            Switch.transform.parent = Canvas.transform;
            Switch.transform.localPosition = Vector3.zero;
            // Place Previous Button
            Previous.transform.parent = Switch.transform;
            Previous.transform.localPosition = Vector3.zero;
            // Place Text Field
            Text.transform.parent = Switch.transform;
            Text.transform.localPosition = Vector3.zero;
            // Place Next Field
            Next.transform.parent = Switch.transform;
            Next.transform.localPosition = Vector3.zero;
        }
    }
}

如何创建对象作为Canvas的父对象

您必须首先找到Canvas游戏对象。Canvas GameObject附带了Canvas组件。因此,您可以使用FindObjectOfType来查找Canvas组件。然后,您可以将该Canvas脚本的实例转换为GameObject。修复您的原始代码:

[MenuItem("GameObject/UI/Switch")]
static void Switch()
{
    //Create new GameObject
    GameObject go = new GameObject("switch");

    //Find Canvas in the Scene
    Canvas canvas = (Canvas)GameObject.FindObjectOfType(typeof(Canvas));
    //Get Canvas GameObject
    GameObject canvasGameObject = canvas.gameObject;
    //Make the new GameObject child of the Canvas
    go.transform.parent = canvasGameObject.transform;
    go.transform.localPosition = Vector3.zero;
    //Change the new GameObject Layer to UI
    go.layer = 5; //Or go.layer = canvasGameObject.layer;
    //Add Rect Transform to it
    go.AddComponent<RectTransform>();
}