ugui

UGUI 查找按钮名称

允我心安 提交于 2019-12-13 11:55:58
昨天在做项目的时候,按钮是符合条件才会出现的,所以我需要在点击按钮时获得这个按钮究竟是哪一个,在询问了N多人之后,还是百度告诉了我这个答案。 string name = EventSystem.current.currentSelectedGameObject.GetComponent<Button>().name; string name = EventSystem.current.currentSelectedGameObject.GetComponent<xxx>(),这个方法通过你的点击,返回了点击物体,因为我需要的是名字,所以用的这种写法,主要看你需要什么了。对了,记得引入using UnityEngine.EventSystems; 来源: CSDN 作者: 起个名字真的好难啊 链接: https://blog.csdn.net/e295166319/article/details/103523004

Unity4.6新UI系统初探(uGUI)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-06 18:32:28
一、引言 Unity终于在即将到来的 4.6 版本内集成了 所见即所得 的UI解决方案 (视频) 。事实上从近几个版本开始,Unity就在为这套系统做技术扩展,以保证最终能实现较理想的UI系统。本文试图通过初步的介绍和试用,让读者对这套系统有大体的了解,以便更进一步评估这套UI系统好不好用,适合用在什么项目。为了避免坑挖太深,更进一步的试用和评估我将在《 用uGUI开发自定义Toggle Slider控件 》中进行论述。为论述方便,下文将这套New UI System简称为 uGUI ,并且以 X-UI 指代现有第三方UI插件。 (测试只针对Unity 4.6.0 beta 10,正式版可能会有所出入。目前Unity没提供文档,本人半桶水,欢迎群众在微博或Issues里吐槽!) 二、Rect Transform Rect Transform继承自Transform,是uGUI相比X-UI最显著的区别[ 注1 ]。当你为Empty GameObject加入一个UI Component时,Transform会自动转换为Rect Transform。Rect Transform尽量整合了X-UI常见的 anchor (相对父物体的锚点), pivot (中点), stretch (拉伸)等属性。值得一提的是,这里的 anchor 是Rect而非Vector2,因为它不仅用于偏移

Unity NGUI插件

时光总嘲笑我的痴心妄想 提交于 2019-12-06 05:34:27
前言:关于Unity中关于UI的插件,我们最开始学的是UGUI,是Unity自带的UI系统,而在Unity版本还没更新出UGUI之前,除了NGUI没有一个更好些的插件,所以人们不得不去选择NGUI去制作UI,但随着Unity做出了自己的UGUI系统之后,人们更多是使用Unity自带的UI系统,也就是UGUI,这里我也只是简单的认识一下,毕竟前面学习了UGUI,它们很相似,好了,废话不多说了 下载NGUI 在Unity官网的Asset Store中下载UGUI 看NGUI的例子 在学习一个插件之前,如果快速的了解这个插件呢?最简单的方式就是查看插件自带的一些例子,通过看这些例子,了解基本的一些实现的功能,以及脚本 Prefab Toolbar(预设体工具栏) 首先新建一个场景 NGUI>>Open>>Prefab Toolbar 会出现一个工具栏,通过它我们可以把UGUI已经做好的预设体(各种UI控件:按钮、复选框、滑条、下拉菜单、进度条、输入框等,跟UGUI中的基本一样)拖到场景中或是层级视图中 我们选中一个Button拖到场景中,会发现UGUI会自动添加一个UI Root(相当于UGUI中的画布)和一个Camera 我们看一下它们的检视面板 UI Root Transform组件中多了P、R、S小按钮,它们是用来初始化Transform的 UI Root脚本 UI Panel脚本

UGUI-图片黑白Shader

三世轮回 提交于 2019-12-03 16:08:14
Shader: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "UI/Default Grey" { Properties { [PerRendererData] _MainTex ( "Sprite Texture" , 2 D) = "white" {} _Color ( "Tint" , Color) = ( 1 , 1 , 1 , 1 ) } SubShader { Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" "PreviewType" = "Plane" "CanUseSpriteAtlas" = "True" } // 源rgba*源a + 背景rgba*(1-源A值) Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float4 color

Unity中为UGUI精灵自定义事件响应区域

别来无恙 提交于 2019-12-03 15:54:05
到目前为止,UGUI组件功能还很局限,这就需要开发者自己动手实现某些开发需求。UGUI中的组件(以按钮Button为例)默认响应事件的区域为整个UI元素区域,我们也可以自定义精灵某些特定区域用来响应事件。 我们知道所有UI都有Image组件,其中有RaycastTarget属性,勾选该属性为true则表示运行时UI精灵会响应相应交互事件,这套UGUI(包括NGUI)是通过射线检测实现的交互响应,那么我们可以通过添加可编辑碰撞器的方式,修改Image默认检测区域: 现在我们想要点击按钮中间三角形区域按钮才有效,需要删除Button原有Image组件, 接着为按钮Button添加PolygonCollider2D组件: 点击EditCollider编辑该多边形碰撞器, 接着我们添加一个C#类:CustomButtonArea,该类继承自Image,我们查看Image中原生方法,发现有如下内容: 完整代码截图如下: 我们重写了Image中一个返回值为Bool的是否为射线检测区域的方法, 为Button添加自定义类,运行unity,我们发现整个按钮只有点击中间三角形区域按钮才有响应。 来源: CSDN 作者: Pai大星 链接: https://blog.csdn.net/qq_38190993/article/details/69257990

Unity实现基于UGUI的简易UI框架

旧街凉风 提交于 2019-12-03 15:21:55
Unity实现基于UGUI的简易UI框架 什么是UI框架? UI框架中的 UIManager 管理场景中所有的面板, 控制面板之间的跳转. 本Demo实现以下功能: 关闭当前页面 显示新的页面 叠加显示 关闭当前页面并显示 关闭所有页面并显示 安卓返回键响应 返回上一个页面 退出程序 设计UI页面 先搭建好所有的UI界面, 并保存为prefab 通过Json和枚举保存所有面板的信息 json : json用于描述资料结构,有两种结构存在: 对象 (object):一个对象包含一系列非排序的名称/值对(pair),一个对象以 { 开始,并以 } 结束。每个名称/值对之间使用 : 分区。 数组 (array):一个数组是一个值(value)的集合,一个数组以 [ 开始,并以 ] 结束。数组成员之间使用 , 分区。数组成员具体的格式如下: 名称/值(pair):名称和值之间使用 : 隔开,一般的形式是: {name:value} UIPanelType.json : 保存这个工程所有的UI面板类型及其相应的prefab的路径, 此时主要该文件和prefab文件都需要位于 Resources 文件夹路径下 { "infoList": [ {"panelTypeString":"ALERT_PANEL", "path":"AlertPanel"}, {"panelTypeString":

【Unity】UGUI Image组件检视面板编辑器扩展(ImageEditor类)

你离开我真会死。 提交于 2019-12-03 15:13:08
问题描述 说到Unity的检视面板编辑器扩展,相信大家都不会陌生。但是当你尝试用同样的方式去扩展UGUI的组件时,会发现根本没有效果。 解决方案 这个问题的解决方案有两个关键点: 用继承的方式避开同系统编辑器扩展的冲突 所扩展的编辑器类要继承ImageEditor类而不是Editor类 测试版本 Unity 2017.1.1 f1 前提条件 由于所要使用的ImageEditor类所在命名空间为UnityEditor.UI,而这个命名空间并不能直接敲出来。Unity一边的错误提示是程序集引用错误。这是一个坑点。 解决方法:需要手动将Unity安装路径Unity\Editor\Data\UnityExtensions\Unity\GUISystem\Editor 下的UnityEditor.UI.dll文件拷贝到当前项目的Assets文件加下。 源代码 // MyImage.cs using UnityEngine; using UnityEngine.UI; public class MyImage : Image // 继承Image类 { } // MyImageEditor.cs using UnityEditor; using UnityEngine; using UnityEditor.UI; [CustomEditor(typeof(MyImage))] //

unity UGUI Image之扩展

一个人想着一个人 提交于 2019-12-03 14:26:44
由于ngui对新版的unity的兼容性越来越不好了,现在逐步转向unity的亲儿子---ugui。尝试着搭了几个ui之后,发现image的图片操作不是太方便(例如 我想在slice模式下,按照比例去放大图片),我每次都算一边。 用了ngui的我联想到能不能模仿者ngui UISprite的方式去扩展呢。哈哈,最终被我搞成了。先看效果 用过ngui的朋友们是不是对这个界面很熟悉。 下面介绍扩展方式: 1:扩展Image public class ExtImage : Image { } 2:构建width height,宽高比,缩放样式 public UIWidget.AspectRatioSource keepAspectRatio = UIWidget.AspectRatioSource.Free; public float aspectRatio = 1f; private int mWidth; private int mHeight; 3:提供操作的方法 protected override void Awake() { base.Awake(); UpdateSize(); } public int Height { get { return mHeight; } set { value = Mathf.Max(2, value); if (mHeight !=

UGUI的image

こ雲淡風輕ζ 提交于 2019-12-03 14:26:23
属性面板 preserve aspect 是将图片以原比例大小进行缩放 图片的Image Type和NGUI的一摸一样,简单模式,九宫格模式,平铺模式,填充模式 九宫格模式,点击图片,属性区域点击Sprite Editor,在编辑面板设置Border边框数值,记得Apply保存操作。只会对图片的中心区域进行拉伸 平铺模式,如果图片使用了九宫边框,只会平铺中间区域,不会平铺边框 set native Size 设置图片以原始尺寸显示 Image使用方式,要么纯粹显示颜色,或者指定图片源,用于显示图片 图片资源必须将类型修改为Sprite(2D and UI),修改完图片的类型之后记得APPly进行保存 来源: CSDN 作者: 猫不在 链接: https://blog.csdn.net/qq_33574890/article/details/82319177

UGUI Image扩展组件

柔情痞子 提交于 2019-12-03 14:26:07
功能: 优化对称图片及九宫格图片内存(对称图片只用一半图片,九宫格只用左下部分四分之一图片)。 核心代码: 1、九宫格翻转代码: /// <summary> /// 赋值九宫vert顶点数据 /// </summary> /// <param name="toFill"></param> /// <param name="rect"></param> /// <param name="padding"></param> /// <param name="adjustedBorders"></param> /// <param name="dir">0-3代表4个方向,分别为0:左下部分;1:右下部分;2:右上部分;3:左上部分</param> private void Generate9SlicedSprite(VertexHelper toFill, ref Rect rect, ref Vector4 padding, ref Vector4 adjustedBorders, int dir) { s_VertScratch[3] = new Vector2((rect.width - padding.z - padding.x) / 2, (rect.height - padding.w - padding.y) / 2); s_VertScratch[2] = s