博客
关于我
Unity定制 Image、Text的对象生成
阅读量:253 次
发布时间:2019-03-01

本文共 2832 字,大约阅读时间需要 9 分钟。

2016.4.14

昨天看到 雨凇的 Unity3D研究院之UGUI一个优化效率小技巧: 

完善了他所说的代码:

 

using UnityEngine;using UnityEngine.UI;using System.Collections;using UnityEditor;using UnityEngine.EventSystems;/// /// 创建 Text、Image 的时候默认不选中 raycastTarget 等/// public class OverrideCreateUIMenu{    ///     /// 第一次创建UI元素时,没有canvas、EventSystem所有要生成,Canvas作为父节点    /// 之后再空的位置上建UI元素会自动添加到Canvas下    /// 在非UI树下的GameObject上新建UI元素也会 自动添加到Canvas下(默认在UI树下)    /// 添加到指定的UI元素下    ///     [MenuItem("GameObject/UI/Image")]    static void CreatImages()    {        var canvasObj = SecurityCheck();        if (!Selection.activeTransform)      // 在根目录创建的, 自动移动到 Canvas下        {            // Debug.Log("没有选择对象");            Image().transform.SetParent(canvasObj.transform);        }        else // (Selection.activeTransform)        {            if (!Selection.activeTransform.GetComponentInParent
()) // 没有在UI树下 { Image().transform.SetParent(canvasObj.transform); } else { Image(); } } } private static GameObject Image() { GameObject go = new GameObject("x_Image", typeof(Image)); go.GetComponent
().raycastTarget = false; go.transform.SetParent(Selection.activeTransform); Selection.activeGameObject = go; return go; } // 我们要设置默认字体 [MenuItem("GameObject/UI/Text")] static void CreatTexts() { var canvasObj = SecurityCheck(); if (!Selection.activeTransform) // 在根目录创建的, 自动移动到 Canvas下 { // Debug.Log("没有选择对象"); Text().transform.SetParent(canvasObj.transform); } else // (Selection.activeTransform) { if (!Selection.activeTransform.GetComponentInParent
()) // 没有在UI树下 { Text().transform.SetParent(canvasObj.transform); } else { Text(); } } } private static GameObject Text() { GameObject go = new GameObject("x_Text", typeof(Text)); var text = go.GetComponent
(); text.raycastTarget = false; text.font = AssetDatabase.LoadAssetAtPath
("Assets/Arts/Fonts/zh_cn.TTF"); // 默认字体 go.transform.SetParent(Selection.activeTransform); Selection.activeGameObject = go; //go.AddComponent
(); // 默认添加 附加组件 return go; } // 如果第一次创建UI元素 可能没有 Canvas、EventSystem对象! private static GameObject SecurityCheck() { GameObject canvas; var cc = Object.FindObjectOfType
(); if (!cc) { canvas = new GameObject("_Canvas", typeof(Canvas)); } else { canvas = cc.gameObject; } if (!Object.FindObjectOfType
()) { GameObject eventSystem = new GameObject("_EventSystem", typeof(EventSystem)); } return canvas; }}



转载地址:http://zwla.baihongyu.com/

你可能感兴趣的文章
Java-IO之File类
查看>>
单链表的查找、建立操作(C语言)
查看>>
Delphi 数据类型列表
查看>>
Delphi 选择文件之OpenDialog【并添加至Image】
查看>>
C# 基础之前后端分离【02】
查看>>
Vue v-for 循环
查看>>
Vue 用户信息表的添加删除
查看>>
MySQL更改密码
查看>>
操作系统-- 死锁知识详解
查看>>
操作系统--内存管理策略知识详解
查看>>
操作系统--虚拟内存管理知识详解(下)
查看>>
第十届蓝桥省赛 Java 大学 C 组旋转
查看>>
并发控制
查看>>
A - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(BFS)
查看>>
L - 病毒扩散(暴力)
查看>>
SDUT程序设计基础(一)往年期末考试题目题解(2015~2017)
查看>>
AcWing 1432. 棋盘挑战(DFS回溯+n皇后问题变形)
查看>>
2021-02-04
查看>>
2021-04-15
查看>>
free(): double free detected in tcache 2 如何解决
查看>>