Unity从右键菜单选中UIText的时候事实上实现了什么逻辑?如果没有选中任何物体时Text是怎么被创建到预制体的 用代码实现这个过程
当在Unity中选中右键菜单中的"UI/Text"时,Unity实际上会执行以下逻辑:
- 创建一个新的Canvas对象(如果场景中没有Canvas对象)。
- 在Canvas对象下创建一个新的Text对象。
- 设置Text对象的默认属性,例如字体、字号、对齐方式等。
- 将Text对象添加到场景中,并将其作为子对象添加到Canvas对象下。
当没有选中任何物体时,Unity会将Text创建到预制体的过程如下:
- 创建一个新的Canvas对象(如果场景中没有Canvas对象)。
- 创建一个新的Text对象。
- 设置Text对象的默认属性,例如字体、字号、对齐方式等。
- 创建一个新的空GameObject对象,并将Text对象作为子对象添加到该GameObject下。
- 将该GameObject设置为预制体,并保存到指定的路径上。
以下是用代码实现这个过程的示例:
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
public class CreateTextPrefab : MonoBehaviour
{
[MenuItem("GameObject/UI/Text", false, 10)]
public static void CreateText()
{
// 创建Canvas对象
GameObject canvas = new GameObject("Canvas");
canvas.AddComponent<Canvas>();
canvas.AddComponent<CanvasScaler>();
canvas.AddComponent<GraphicRaycaster>();
// 创建Text对象
GameObject textObject = new GameObject("Text");
textObject.transform.SetParent(canvas.transform, false);
// 添加Text组件并设置默认属性
Text textComponent = textObject.AddComponent<Text>();
textComponent.font = Resources.GetBuiltinResource<Font>("Arial.ttf");
textComponent.fontSize = 14;
textComponent.alignment = TextAnchor.MiddleCenter;
// 设置为预制体并保存到指定路径
GameObject prefab = PrefabUtility.SaveAsPrefabAssetAndConnect(textObject, "Assets/Prefabs/TextPrefab.prefab", InteractionMode.AutomatedAction);
Selection.activeObject = prefab;
}
}
在Unity中创建一个新的C#脚本,将上述代码粘贴到脚本中。然后在Unity编辑器中点击"GameObject"菜单,选择"UI",然后选择"Text",即可执行该代码,创建一个Text预制体并保存到指定路径
原文地址: https://www.cveoy.top/t/topic/hyif 著作权归作者所有。请勿转载和采集!