UGUI
萧然CS
喜欢玩游戏,更喜欢做游戏
展开
-
【Unity UGUI】ScreenPointToLocalPointInRectangle和Rect.Contains判断屏幕坐标是否在指定UI区域内
RectTransformUtility.ScreenPointToLocalPointInRectangle:将屏幕坐标转化为相对RectTransform的本地坐标RectTransform.rect.Contains:判断坐标点是否在Rect矩形内,RectTransform.rect是相对于RectTransform的本地坐标 RectTransform rectTrans = transform as RectTransform; Vector2 scree原创 2022-02-25 18:52:58 · 5161 阅读 · 1 评论 -
【Unity UGUI】IsRaycastLocationValid和RectangleContainsScreenPoint自定义Image可接收射线检测区域
public bool ICanvasRaycastFilter.IsRaycastLocationValid(Vector2 sp,Camera eventCamera);在指定摄像机eventCamera中,屏幕坐标sp是否可以点击到this.RectTransform。public static bool RectTransformUtility.RectangleContainsScreenPoint(RectTransform rect,Vector2 screenPoint,Came原创 2022-01-11 15:54:29 · 4434 阅读 · 0 评论 -
【Unity/C#】限制字符串显示长度,比如限制玩家角色名字显示长度
例如:UI显示规则:英文字符长度==1,中文字符长度==2,限制字符串显示长度不超过10,超出部分用"···"代替playerNameText.text = StringUtility.AbbrevStringWithinLength("玩家de名字可能会很长的~",10,"···");//结果:"玩家de名字···" /// <summary> /// 化简字符串长度 /// </summary> /// <param name=原创 2021-10-25 18:17:05 · 3124 阅读 · 1 评论 -
【UGUI】ScrollRect 动态缩放格子大小,自动定位到中间的格子
实现效果:ScrollRect,格子动态缩放大小,滑动结束自动定位中间格子使用说明:目前只支持横向从左往右列表,格子锚点、中心点设置在左上角,Content,设置好Y坐标,运行时自动修改X坐标。实现原理:动态缩放功能实现:Transform改变时,计算列表可视区域内所有格子与列表中心的偏移量,根据偏移量缩放格子。 自动定位功能实现:初始化计算每个格子的位置,滑动结束后,计算每个格子到列表中心的偏移量,偏移量最小的格子就是列表最中间的格子,再把它自动移动到列表中心的位置,实现定位。.原创 2021-08-07 19:13:37 · 1223 阅读 · 5 评论 -
【Unity】修改UI Prefab预览环境Canvas(Environment)
比如Canvas的渲染模式设置为"Screen Space - Camera",打开UI prefab,却是在Unity提供的默认Canvas下预览的,这样很多参数设置原创 2021-06-16 14:55:45 · 6681 阅读 · 0 评论 -
【UGUI】使用Screen.safeArea适配全面屏/异形屏
使用Screen.safeArea适配全面屏/异形屏原创 2021-03-05 16:04:26 · 7208 阅读 · 0 评论 -
【Unity】UI或3D场景自动设置渐变色背景
给定一组色值(或者多组色值,每次随机取一组),初始化时创建图片并赋值给UI的Image或3D场景的Sprite。从下/左往上/右,按曲线渐变using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;[RequireComponent(typeof(Image))]public class BgGradient : MonoBehaviour{ ...原创 2021-01-21 14:45:15 · 1624 阅读 · 2 评论 -
【Unity】UGUI动态适配Text尺寸大小
Text.preferredWidth /Text.preferredHeight : Text的最优宽度/高度,保持当前高度/宽度不变,计算最优宽度/高度在Text.text赋值字符串后,计算字符串的最优高度或宽度,可动态调整Text尺寸大小例如,限制Text的最大和最小宽度,自动调整高度:public class Test : MonoBehaviour{ //Text最小/最大宽度 private int textSizeMinWidth = 100; ...原创 2020-12-31 18:25:28 · 3781 阅读 · 0 评论 -
【Unity】UGUI动态切换不同尺寸图片时自动设置Image大小
UGUI动态切换不同尺寸图片时自动设置Image大小:1.image.SetNativeSize(),将Image设置为贴图的原始尺寸2.sprite.rect获取贴图尺寸,rectTransform.sizeDelta设置Image尺寸,可以自定义缩放 float imageSizeScale = 1; Image image = null; Sprite sprite = null; //image.SetNativeS...原创 2020-10-30 15:40:45 · 6326 阅读 · 2 评论 -
【Unity】系统通知弹窗(CanvasGroup组件实现淡入淡出)
发不了短视频只好贴张图了主要是在实现淡入淡出时用到了Canvas Group组件:组件比较简单,有四个属性:Alpha:透明度Interactable:是否禁用输入交互Block Raycasts:是否禁用射线检测Ignore Parent Groups:是否忽略父级Canvas Group该组件作用于挂载该组件的GameObject及其子物体。利用这一点,可以控制整个UI窗...原创 2018-11-27 21:00:11 · 2127 阅读 · 0 评论 -
【Unity】金币数值变化动画
在最近项目里,每一关卡通关之后,都会增加金币,购买道具则消耗金币,在UI面板会实时显示金币数量的变化。为了增强游戏效果,给金币数值添加了一个动画,实现效果就是可以在指定时间内动态的显示数值变化。 代码也很简单,都不需要注释 ··· ··· public void ShowCoin(Text coinText, int coinValue, int changeCount = 10, flo...原创 2018-08-23 21:10:52 · 3810 阅读 · 0 评论 -
【Unity】UGUI拖拽格子交换位置
效果类似背包功能,可以随意拖拽位置,交换两个格子位置using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;using DG.Tweening;public class ...原创 2019-08-21 19:53:49 · 2739 阅读 · 0 评论 -
【Unity】简易UI框架(带通知弹窗)
主要包含:统一控制Panel全屏界面面板及Popup弹窗的显示隐藏,通知消息弹窗,按钮自动添加点击音效UIManager:统一管理类,统一控制各个界面的显示及隐藏界面隐藏时,是将界面SetActive(false)了(没有写刷新函数,如果界面已显示,再次调用显示时,最好刷新一次界面),也可以直接Destroy(gameObject)销毁,下次显示时重新创建在加载创建UI界面时,会给...原创 2019-12-05 16:07:20 · 1923 阅读 · 3 评论 -
【Unity】刮刮乐效果(擦除图片像素值)
实现类似刮刮乐效果,擦除图片指定像素值(修改图片Alfa通道)参考Unity刮刮乐工程源码的实现原理,对实现方式有一些调整这里RawImage需要保持原图大小,不能缩放,不然坐标计算会有偏差using System;using System.Collections;using System.Collections.Generic;using UnityEngine;u...原创 2019-12-05 21:02:07 · 4504 阅读 · 4 评论 -
【Unity】滚动缩放关卡选择列表
简单实现,正式用时继续优化,现仅支持左右切换按钮点击,后续增加单元格面板点击切换,左右滑动切换···using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class UIChapterPanel : UIPanelBase{ private UIChapterItem[] chapterItemArray; priv..原创 2020-08-18 11:49:02 · 2496 阅读 · 17 评论 -
【Unity】用Text+Image实现神奇的文字下划线
写需求的时候搜了一些文字加下划线的方法,UGUI的Text,大都需要写一堆代码来封装Text,比较麻烦考虑过用TextMeshPro,不过TextMeshPro不能公用Text的字体,有点坑利用Text加Image试了一下,实现效果看着还不错1. 给Text加一个Image作为自物体2. 给Text所在节点添加Conrtent Size Fitter组件,修改水平适配方式...原创 2019-12-09 18:23:02 · 3312 阅读 · 1 评论 -
【Unity】UGUI不改变子物体顺序调整显示层级顺序
1. 顺便提一下UI格子的动态排序,即通过改变子物体顺序,调整UI显示层级顺序 //设为第一个子物体 itemButton.transform.SetAsFirstSibling(); //设为最后一个子物体 itemButton.transform.SetAsLastSibling(); ...原创 2019-12-24 18:33:37 · 6618 阅读 · 2 评论 -
【Unity】利用富文本给文字动态添加颜色
首先要确保Test组件色RichText是开启的把颜色转换为16进制字符串,然后添加到富文本,最后显示到Text组件 public static string AddColor(string str, Color color) { return string.Format("<color=#{0}>{1}</color>", ColorUtility.ToHtmlStringRGBA(color), str); }...原创 2020-05-20 12:31:34 · 5324 阅读 · 0 评论 -
【Unity】UGUI实现摇杆功能
using System.Collections;using System.Collections.Generic;using UnityEngine;using System;using UnityEngine.EventSystems;public class InputJoystick : MonoBehaviour{ //摇杆根节点 [SerializeField] RectTransform joystickRoot; //摇杆节点 [Seria...原创 2020-05-31 12:58:58 · 804 阅读 · 0 评论 -
【Shader】Unity的UGUI中,彩色图片置灰效果
通过rgb计算灰度值,然后重新赋值给rgb。half gray = dot(color.rgb, fixed3(0.299, 0.0587, 0.114));color.rgb = half3(gray, gray, gray);彩色图变灰RGB的权重会固定为(0.299, 0.587, 0.114)或(0.222, 0.707, 0.071)。研究表明,人眼对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低。使用不同的权重将得到比较合理的灰度图像。实验和理论推导出来的结果是(0.299原创 2020-09-11 10:33:09 · 3108 阅读 · 0 评论 -
【Unity】UI界面展示3D模型
方法一:使用RenderTexture。RawImage作为UI元素可随意调节显示层级(即UI子物体先后顺序),适合将3D物体投影到局部UI界面。1. Project中创建RenderTexture;2. UI新建RawImage,设置Texture为RenderTexture;3. 3D物体Cube标记Layer为"Cube";4. 新建相机,设置ClearFlags、CullingMask,设置TargetTexture为RenderTexture。方法二:直接使..原创 2020-09-10 22:45:44 · 9020 阅读 · 0 评论