canvas教程

Unity定制 Image、Text的对象生成

字号+ 作者:H5之家 来源:H5之家 2016-04-20 18:00 我要评论( )

2016.4.14昨天看到雨凇的Unity3D研究院之UGUI一个优化效率小技巧:http://www.xuanyusong.com/archives/4006完善了他所说的代码:usingUnityEngine;usingUnityEn

2016.4.14


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


完善了他所说的代码:

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; } }






 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 实现Unity和Android进行交互

    实现Unity和Android进行交互

    2017-04-10 09:02

  • Canvas Fingerprinting 指纹锁定技术

    Canvas Fingerprinting 指纹锁定技术

    2017-03-28 09:00

  • Android开发学习之ImageView手势拖拽、缩放、旋转

    Android开发学习之ImageView手势拖拽、缩放、旋转

    2017-03-27 11:00

  • Unity GUI 视频公开课(uGUI)

    Unity GUI 视频公开课(uGUI)

    2017-03-22 17:01

网友点评
-