博客
关于我
Unity定制 Image、Text的对象生成
阅读量:252 次
发布时间: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/

你可能感兴趣的文章
Git和gitHub用户名 邮箱
查看>>
关于消息队列的使用
查看>>
linux项目部署常用命令
查看>>
Hive常用函数大全(二)(窗口函数、分析函数、增强group)
查看>>
autotools教程
查看>>
简陋的CNN实现手写数字识别
查看>>
win10新增一块硬盘扩展分区
查看>>
HTTPS通信安全及证书管理
查看>>
mp4info mp4tool
查看>>
android instant app
查看>>
ubuntu非root用户如何访问vmware共享文件夹
查看>>
android studio修改了cmakelist.txt里的内容,要重新编译,如何操作
查看>>
自动化配置管理工具Puppet,Chef, Ansible等
查看>>
解决lombok @Data时,get/set方法冒红问题的办法
查看>>
如何使用Postman保存请求和返回,离线查看请求数据
查看>>
系统架构
查看>>
图解HTTP (chap4 Http状态码) 4XX
查看>>
图解HTTP (chap4 Http状态码) 5XX
查看>>
图解HTTP (chap5 web服务器) 虚拟主机
查看>>
creator世界坐标w_pos会变化导致的录屏回放时相对位置变化造成bug(改为local_pos即可解决)
查看>>