ugui

UGUI的事件系统

烈酒焚心 提交于 2020-01-24 02:59:14
当我们在场景中创建任一UI对象后,Hierarchy面板中都可以看到系统自动创建了EventSystem对象,EventSystem对象负责管理所有事件相关对象,该对象下挂载了EventSystem组件和StandaloneInputModule组件,前者为管理脚本,后者为输入模块。Canvas对象下挂载了GraphicRaycaster负责处理射线相关运算,用户的操作都会通过射线检测来映射到UGUI组件上,InputModule将用户的操作转化为射线检测,Raycaster则找到目标对象并通知EventSystem,最后EventSystem发送事件让目标对象进行响应。 总结来说就是:EventSystem负责管理,BaseInputModule负责输入,BaseRaycaster负责确定目标对象,目标对象负责接收事件并处理,然后一个完整的事件系统就有了 一:EventSystem事件系统 一个场景中只能有一个EventSystem组件 ——First Selected:第一次默认选择的物体 ——Send Navigation Events:是否可以使用导航事件(键盘上下左右)控制 ——Drag Threshold:视为拖拽操作的最小距离 二:EventInterface事件接口 (实现Tooltip) ——IPointerEnterHandler 鼠标进入时响应 —

Unity项目中world space状态下的UGUI始终渲染在最上层

为君一笑 提交于 2020-01-23 03:36:50
Unity项目中world space状态下的UGUI始终渲染在最上层 简介 shader 简介 使用shader创建材质球,赋值到UGUI的对象上,使该UGUI对象始终渲染在最上层。 原文章中是在制作VR项目时,但其实在除Screen Space-Overlay状态下,都可使用。只要符合实际需求即可。 因为拥有该shader的UGUI不会被一般的3D物体所遮挡,故要根据具体需求使用。 shader shader出自: https://blog.csdn.net/u013032852/article/details/77642262 Shader "UI/Overlay" { Properties { [ PerRendererData ] _MainTex ( "Font Texture" , 2 D ) = "white" { } _Color ( "Tint" , Color ) = ( 1 , 1 , 1 , 1 ) _StencilComp ( "Stencil Comparison" , Float ) = 8 _Stencil ( "Stencil ID" , Float ) = 0 _StencilOp ( "Stencil Operation" , Float ) = 0 _StencilWriteMask ( "Stencil Write Mask" ,

unity 获取UGUI中的Text字的坐标

微笑、不失礼 提交于 2020-01-16 09:10:43
using System.Collections; using UnityEngine; using UnityEngine.UI; public class TextMoveHelper : MonoBehaviour { public Text textComp; public Canvas canvas; public Text text; public Vector3 GetPosAtText(Canvas canvas, Text text,string strFragment) { int strFragmentIndex = text.text.IndexOf(strFragment);//-1表示不包含strFragment Vector3 stringPos = Vector3.zero; if (strFragmentIndex>-1) { Vector3 firstPos = GetPosAtText(canvas, text, strFragmentIndex + 1); Vector3 lastPos= GetPosAtText(canvas, text, strFragmentIndex+strFragment.Length); stringPos = (firstPos + lastPos) * 0.5f; } else { stringPos=

UGUI:窗口限制以及窗口缩放

╄→尐↘猪︶ㄣ 提交于 2020-01-05 13:14:47
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top 优梦创客的游戏讲堂:https://91make.ke.qq.com 『优梦创客』的微信公众号:umaketop 您可以自由转载,但必须加入完整的版权声明 窗口拖动限制在一个特定的区域 public class Scene : MonoBehaviour, IDragHandler, IPointerDownHandler { public RectTransform RtTransform; public RectTransform RTParent; Vector2 downpos; Vector2 newpos; public void OnPointerDown(PointerEventData eventData) { RectTransformUtility.ScreenPointToLocalPointInRectangle (RtTransform, eventData.position ,eventData.pressEventCamera, out downpos); //print(downpos); } public void OnDrag

UGUI ScrollRect 性能优化

左心房为你撑大大i 提交于 2020-01-04 03:42:15
测试环境 操作系统:Windows8.1 开发工具:Unity5.5.2 1、问题描述,在实际开发过程中经常会使用ScrollRect实现滚动列表,当初次加载数据比较多的情形时,Unity3D会出现比较严重的卡顿,降低帧率,其原因主要为 a、集中式的申请ItemRenderer对象大量堆内存,b、帧Draw Call增加。 2、解决方案,主要逻辑根据Viewport即Mask Visual区域计算当前上下文显示ItemRenderer个数,同时滚动的时候会动态计算scrollLineIndex行数,来重新计算每一个ItemRenderer渲染的位置,从而复用ItemRenderer。   如图所示:当前数据已经有31个,但是ItemRenderer的实例只有21个,即当前满屏情况下最大的显示个数。 3、完成代码 UIWrapItem 用来作为数据、ItemRenderer prefab的 具体关联类。 using UnityEngine; /// <summary> /// Wrapper Item for user data index. /// </summary> public class UIWrapItem : MonoBehaviour { /// <summary> /// User data index /// </summary> private int

使用UGUI绘制自定义几何图形

不打扰是莪最后的温柔 提交于 2020-01-03 08:37:58
本文展示了如何使用UGUI绘制矩形,同理可绘制其他几何图形。 UGUI的渲染体系,简单来说所有的控件和可显示的元素都是Graphic。Graphic持有一个CanvasRenderer,通过SetVertices设置顶点,最终完成绘制。 举例来说,Image控件就是一个Graphic,这个GameObject上面同时还有一个CanvasRenderer,两者结合起来最终把图片绘制完成。 重点在于绘制函数修改为OnPopulateMesh,使用VertexHelper来设置顶点,先设置所有的顶点,然后按照三角形或者者是四边形填充索引。 设置的顶点格式是UIVertex,包含position、color、uv0等属性。 如图所示,可以通过拖动顶点位置,改变几何形状。 脚本如下: using UnityEngine; using System.Collections; using UnityEngine.UI; public class Area : Graphic { // Use this for initialization void Start () { } // Update is called once per frame void Update() { SetAllDirty (); } protected override void OnPopulateMesh

UGUI Text组件扩展

南楼画角 提交于 2019-12-30 14:17:56
在项目开发中,和ui界面打交道是必不可少的,但是最近发现ugui提供的text组件,在很多情况下不能满足美术的需求,这就对text组件进行扩展编辑,使其尽可能满足项目的需求,这里主要实现字间距、字体颜色、字体阴影、字体描边、字体根据需求自动选择字体和颜色字号等功能。 原文链接: http://gad.qq.com/article/detail/289319 来源: CSDN 作者: wotingdaonile 链接: https://blog.csdn.net/wotingdaonile/article/details/103746988

UGUI进阶组件[十]Selectable

孤人 提交于 2019-12-28 16:06:15
Selectable是大部分交互组件的基类,像Button之类的交互组件都是继承自他 Interactable 表示是否接受交互 Translation 这个属性有四个选项 None :表示对于交互状态不进行任何用户指示表示 ColorTint:表示对于不同的交互状态对指定的图片进行颜色更改来指示表示 SpriteSwap:表示对于不同的交互状态使用图片更换进行指示表示 Animation:表示对于不同的交互状态使用关于图片的动画来进行指示表示 ColorTint选项 TargetGraphic 指定一个带有图片的物体,在Selectable受到交互的时候 不同状态将会赋予不同的颜色给图片的物体 NormalColor:正常颜色,Interactable开启状态下,没有选中的时候,鼠标没有在Selectable所挂物体上面的颜色 HighLightedColor:Interactable开启状态下,鼠标滑动到Selectable所挂物体上面时候的颜色 PressedColor:鼠标在Selectable所挂物体按下去时候的颜色 SelectedColor:鼠标在Selectable所挂物体按下去弹起来 没有在其他物体上面按下去时候的颜色,即Selectable所挂物体在选中状态时候的颜色 DisabledColor:Interactable不开启状态下的颜色

Unity的UGUI实现文字阴影的效果

╄→гoц情女王★ 提交于 2019-12-27 07:28:32
Unity的UGUI实现文字阴影的效果 前言 在我之前做过的项目中,实现文字阴影效果一般是使用精灵图片,将具有阴影效果的图片贴到UGUI的Image组件中。最近做的一个项目用了UGUI文字自带的一个组件即可实现文字阴影功能,在这里记录下。 步骤 1.在场景中创建一个Text组件,如下图所示: 2.在Text文字上添加Shadow组件,设置参数如下图所示: 3.设置完成即可看到文字已经有了阴影效果,如下图所示: 来源: CSDN 作者: 波波斯维奇 链接: https://blog.csdn.net/qq_17367039/article/details/103669520

uGUI备忘

醉酒当歌 提交于 2019-12-22 01:31:49
ContentSizeFitter: 该组件可以帮我们在空间内容发生变化导致空间尺寸改变时,重新计算RectTransform。 但在复杂的UI应用中,可能我们给文本赋值后,没有正确地计算RectTransform,那么我们需要手动触发计算: ContentSizeFitter csf; csf.enable = false; csf.enable = true; 如果这时空间本身地activeSelf=false,那么上面地调用也不会触发计算,我们需要在activeSelf=true的下一帧执行触发计算。 更新RectTransform 改变RectTransform的top GetComponent<RectTransform>().offsetMax = new Vector2(GetComponent<RectTransform>().offsetMax.x, top); 改变RectTransform的bottom GetComponent().offsetMin = new Vector2(GetComponent().offsetMin.x, bottom); 改变RectTransform的width,height GetComponent<RectTransform>().sizeDelta = new Vector2(width, height);