Unity定制 Image、Text的对象生成
2016.4.14
昨天看到 雨凇的 Unity3D研究院之UGUI一个优化效率小技巧: http://www.xuanyusong.com/archives/4006
完好了他所说的代码:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEditor;
using UnityEngine.EventSystems; /// <summary>
/// 创建 Text、Image 的时候默认不选中 raycastTarget 等
/// </summary>
public class OverrideCreateUIMenu
{
/// <summary>
/// 第一次创建UI元素时。没有canvas、EventSystem全部要生成,Canvas作为父节点
/// 之后再空的位置上建UI元素会自己主动加入到Canvas下
/// 在非UI树下的GameObject上新建UI元素也会 自己主动加入到Canvas下(默认在UI树下)
/// 加入到指定的UI元素下
/// </summary>
[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<Canvas>()) // 没有在UI树下
{
Image().transform.SetParent(canvasObj.transform);
}
else
{
Image();
}
}
} private static GameObject Image()
{
GameObject go = new GameObject("x_Image", typeof(Image));
go.GetComponent<Image>().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<Canvas>()) // 没有在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>();
text.raycastTarget = false;
text.font = AssetDatabase.LoadAssetAtPath<Font>("Assets/Arts/Fonts/zh_cn.TTF"); // 默认字体
go.transform.SetParent(Selection.activeTransform);
Selection.activeGameObject = go; //go.AddComponent<Outline>(); // 默认加入 附加组件
return go;
} // 假设第一次创建UI元素 可能没有 Canvas、EventSystem对象!
private static GameObject SecurityCheck()
{
GameObject canvas;
var cc = Object.FindObjectOfType<Canvas>();
if (!cc)
{
canvas = new GameObject("_Canvas", typeof(Canvas));
}
else
{
canvas = cc.gameObject;
}
if (!Object.FindObjectOfType<EventSystem>())
{
GameObject eventSystem = new GameObject("_EventSystem", typeof(EventSystem));
} return canvas;
}
}
Unity定制 Image、Text的对象生成的更多相关文章
- Unity TextMeshPro替代Text组件创建简体中文字体纹理集
Unity原生的Text组件有一个毛病,只要文本放大字体放大就会有毛边或锯齿,一个更好的解决方案是用TextMeshPro替代ugui中的Text组件. TMPro采用SDF文字渲染技术,可以使文字放 ...
- PHP“Cannot use object of type stdClass as array” (php在调用json_decode从字符串对象生成json对象时的报错)
php再调用json_decode从字符串对象生成json对象时,如果使用[]操作符取数据,会得到下面的错误 错误:Cannot use object of type stdClass as arra ...
- java class加载机制及对象生成机制
java class加载机制及对象生成机制 当使用到某个类,但该类还未初始化,未加载到内存中时会经历类加载.链接.初始化三个步骤完成类的初始化.需要注意的是类的初始化和链接的顺序有可能是互换的. Cl ...
- AOP代理对象生成
AOP(Aspect-OrientedProgramming,面向方面编程)是OOP(Object-Oriented Programing,面向对象编程)的良好补充与完善,后者侧重于解决 从上到下的存 ...
- 深入理解Spring AOP之二代理对象生成
深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 ...
- C#开发Unity游戏教程之游戏对象的行为逻辑方法
C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要 ...
- C#开发Unity游戏教程之游戏对象的属性变量
C#开发Unity游戏教程之游戏对象的属性变量 Unity游戏对象的属性——变量 通过对上一章的学习,读者应该了解到了,游戏对象上的属性与脚本中的变量,建立联系的方式就是将脚本赋予游戏对象.上一章只是 ...
- (转载)Unity里实现更换游戏对象材质球
在unity中本来想实现在一个背景墙上更换图片的功能 在网上查了一些资料说是用Image,但我是新手小白刚接触Unity不久好多组建还不会用,就想能不能通过改变游戏对象的材质球来更换游戏对象的背景. ...
- 报表生成poi----java操作java对象生成execl表单
1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...
随机推荐
- 【bzoj3866】The Romantic Hero dp
题目描述 给你n个数,从中选出两个不相交非空集合S和T,使得S中的每一个元素都在T集合的前面,并且S集合中的所有数的亦或等于T集合中的所有数的与,求方案数 mod 10^9+7. 输入 The fir ...
- 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法
题目描述 输入 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 输出 一行一个整数 ...
- 关于flink的时间处理不正确的现象复现&原因分析
跟朋友聊天,说输出的时间不对,之前测试没关注到这个,然后就在processing模式下看了下,发现时间确实不正确 然后就debug,看问题在哪,最终分析出了原因,记录如下: 最下面给出了复现方案 ...
- ZCC loves cube(cube)
题目描述 调戏完了狗,ZCC开始玩起了积木.ZCC的面前有一块n*n的棋盘,他要用这些1*1*1的积木在棋盘上搭出一个宏伟的建筑.积木有三种颜色,ZCC认为一个建筑要被称为宏伟的应该满足能从正面看到的 ...
- VMware Fault Tolerance 概述及功能
VMware Fault Tolerance - 为您的应用程序提供全天候可用性 通过为虚拟机启用 VMware Fault Tolerance,最大限度地延长数据中心的正常运行时间,减少停机管理成本 ...
- PotPlayer一款简洁好用的播放器
PotPlayer 是 KMPlayer 的原制作者姜龙喜先生(韩国)进入 Daum 公司后的新一代作品.PotPlayer 的优势在于强大的内置解码器:而 KMPlayer 的优势在于强大的定制能力 ...
- UVALIVE 3571 Visible Lattice Points
就欧拉函数然后地推一下. #include <map> #include <set> #include <list> #include <cmath> ...
- django怎么自己创建一个中间件
中间件是什么? 中间件是类似flask函数中钩子函数的东西.可以在请求视图函数前,或者视图函数响应后处理某些事情.中间件对全部视图都有效! 中间件一般会有两个方法,process_request和pr ...
- sysbench(mysql测试工具 )
目录 一.基准测试简介 1.什么是基准测试 2.基准测试的作用 3.基准测试的指标 4.基准测试的分类 二.sysbench 1.sysbench简介 2.sysbench安装 3.sysbench语 ...
- poj 1106(半圆围绕圆心旋转能够覆盖平面内最多的点)
Transmitters Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4955 Accepted: 2624 Desc ...