[Unity3D]UGUI 新手引导遮罩控件

[Unity3D]UGUI 新手引导遮罩控件

强制性引导UI控件,关键区域镂空,自动调整关键区域大小。

  • * 效果如图: *
  • 使用结构:

代码块

示例代码:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

using System.Collections.Generic;
using UnityEngine.Serialization;

namespace UnityEngine.UI
{

    public class GuideHighlightMask : MaskableGraphic, ICanvasRaycastFilter
    {
        public RectTransform arrow;
        public Vector2 center = Vector2.zero;
        public Vector2 size = new Vector2(100, 100);

        public void DoUpdate()
        {
            // 当引导箭头位置或者大小改变后更新,注意:未处理拉伸模式
            if (arrow && center != arrow.anchoredPosition || size != arrow.sizeDelta)
            {
                this.center = arrow.anchoredPosition;
                this.size = arrow.sizeDelta;
                SetAllDirty();
            }
        }

        public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
        {
            // 点击在箭头框内部则无效,否则生效
            return !RectTransformUtility.RectangleContainsScreenPoint(arrow, sp, eventCamera);
        }

        protected override void OnFillVBO(List<UIVertex> vbo)
        {
            Vector4 outer = new Vector4(-rectTransform.pivot.x * rectTransform.rect.width,
                                        -rectTransform.pivot.y * rectTransform.rect.height,
                                        (1 - rectTransform.pivot.x) * rectTransform.rect.width,
                                        (1 - rectTransform.pivot.y) * rectTransform.rect.height);

            Vector4 inner = new Vector4(center.x - size.x / 2,
                                        center.y - size.y / 2,
                                        center.x + size.x * 0.5f,
                                       center.y + size.y * 0.5f);

            vbo.Clear();

            var vert = UIVertex.simpleVert;

            // left
            vert.position = new Vector2(outer.x, outer.y);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(outer.x, outer.w);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.x, outer.w);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.x, outer.y);
            vert.color = color;
            vbo.Add(vert);

            // top
            vert.position = new Vector2(inner.x, inner.w);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.x, outer.w);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.z, outer.w);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.z, inner.w);
            vert.color = color;
            vbo.Add(vert);

            // right
            vert.position = new Vector2(inner.z, outer.y);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.z, outer.w);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(outer.z, outer.w);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(outer.z, outer.y);
            vert.color = color;
            vbo.Add(vert);

            // bottom
            vert.position = new Vector2(inner.x, outer.y);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.x, inner.y);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.z, inner.y);
            vert.color = color;
            vbo.Add(vert);

            vert.position = new Vector2(inner.z, outer.y);
            vert.color = color;
            vbo.Add(vert);
        }

        private void Update()
        {
            DoUpdate();
        }
    }
}

来源

http://blog.csdn.net/andyhebear/article/details/50555288

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity新手引导遮罩是一种常见的界面设计元素,用于引导新手玩家了解游戏界面和操作。它通常被用于高亮显示特定的界面元素,并给予玩家相应的提示。 Unity中提供了一些内置的方法来创建新手引导遮罩。首先,开发人员可以使用UGUIUnity的用户界面系统)来创建游戏界面,之后可以添加一张透明的图片作为新手引导遮罩层。然后,可以使用Unity的2D或3D特效来绘制遮罩层所遮挡住的界面元素。这些特效可以使被遮挡的区域变得模糊或是使其颜色变暗,以突出要引导的界面元素。 在引导过程中,可以根据玩家操作的进度来动态地更新遮罩层的位置和形状。例如,当玩家点击一个按钮时,可以使遮罩层逐渐展开,直到完全显示该按钮为止。还可以使用动画效果来增强引导的效果,如淡入淡出或平滑移动的效果。 同时,为了提供更多的交互性,可以为遮罩层添加响应玩家操作的功能。比如,在遮罩层上添加一个按钮,当玩家点击该按钮时,遮罩层可以自动更新到下一个引导步骤,或者直接跳转至其他相关的功能界面。 总之,Unity新手引导遮罩是一个非常实用的功能,可以帮助开发人员创建出更具吸引力和易于理解的游戏体验。它不仅可以引导玩家了解游戏的操作流程,还可以提供更好的用户体验,使玩家更容易上手游戏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值