• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            l

            成都手游碼農(nóng)一枚
            隨筆 - 32, 文章 - 0, 評(píng)論 - 117, 引用 - 0
            數(shù)據(jù)加載中……

            [Unity3D]UGUI 新手引導(dǎo)遮罩控件

            強(qiáng)制性引導(dǎo)UI控件,關(guān)鍵區(qū)域鏤空,自動(dòng)調(diào)整關(guān)鍵區(qū)域大小。

            效果如圖:


            使用結(jié)構(gòu):


              1using UnityEngine;
              2using System.Collections;
              3using UnityEngine.UI;
              4
              5using System.Collections.Generic;
              6using UnityEngine.Serialization;
              7
              8namespace UnityEngine.UI
              9{
             10
             11    public class GuideHighlightMask : MaskableGraphic, UnityEngine.ICanvasRaycastFilter
             12    {
             13        public RectTransform arrow;
             14        public Vector2 center = Vector2.zero;
             15        public Vector2 size = new Vector2(100100);
             16
             17        public void DoUpdate()
             18        {
             19            // 當(dāng)引導(dǎo)箭頭位置或者大小改變后更新,注意:未處理拉伸模式
             20            if (arrow && center != arrow.anchoredPosition || size != arrow.sizeDelta)
             21            {
             22                this.center = arrow.anchoredPosition;
             23                this.size = arrow.sizeDelta;
             24                SetAllDirty();
             25            }

             26        }

             27
             28        public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
             29        {
             30            // 點(diǎn)擊在箭頭框內(nèi)部則無(wú)效,否則生效
             31            return !RectTransformUtility.RectangleContainsScreenPoint(arrow, sp, eventCamera);
             32        }

             33
             34        protected override void OnFillVBO(List<UIVertex> vbo)
             35        {
             36            Vector4 outer = new Vector4(-rectTransform.pivot.x * rectTransform.rect.width, 
             37                                        -rectTransform.pivot.y * rectTransform.rect.height,
             38                                        (1 - rectTransform.pivot.x) * rectTransform.rect.width,
             39                                        (1 - rectTransform.pivot.y) * rectTransform.rect.height);
             40
             41            Vector4 inner = new Vector4(center.x - size.x / 2,
             42                                        center.y - size.y / 2,
             43                                        center.x + size.x * 0.5f,
             44                                        center.y + size.y * 0.5f);
             45
             46            vbo.Clear();
             47
             48            var vert = UIVertex.simpleVert;
             49
             50            // left
             51            vert.position = new Vector2(outer.x, outer.y);
             52            vert.color = color;
             53            vbo.Add(vert);
             54
             55            vert.position = new Vector2(outer.x, outer.w);
             56            vert.color = color;
             57            vbo.Add(vert);
             58
             59            vert.position = new Vector2(inner.x, outer.w);
             60            vert.color = color;
             61            vbo.Add(vert);
             62
             63            vert.position = new Vector2(inner.x, outer.y);
             64            vert.color = color;
             65            vbo.Add(vert);
             66
             67            // top
             68            vert.position = new Vector2(inner.x, inner.w);
             69            vert.color = color;
             70            vbo.Add(vert);
             71
             72            vert.position = new Vector2(inner.x, outer.w);
             73            vert.color = color;
             74            vbo.Add(vert);
             75
             76            vert.position = new Vector2(inner.z, outer.w);
             77            vert.color = color;
             78            vbo.Add(vert);
             79
             80            vert.position = new Vector2(inner.z, inner.w);
             81            vert.color = color;
             82            vbo.Add(vert);
             83
             84            // right
             85            vert.position = new Vector2(inner.z, outer.y);
             86            vert.color = color;
             87            vbo.Add(vert);
             88
             89            vert.position = new Vector2(inner.z, outer.w);
             90            vert.color = color;
             91            vbo.Add(vert);
             92
             93            vert.position = new Vector2(outer.z, outer.w);
             94            vert.color = color;
             95            vbo.Add(vert);
             96
             97            vert.position = new Vector2(outer.z, outer.y);
             98            vert.color = color;
             99            vbo.Add(vert);
            100
            101            // bottom
            102            vert.position = new Vector2(inner.x, outer.y);
            103            vert.color = color;
            104            vbo.Add(vert);
            105
            106            vert.position = new Vector2(inner.x, inner.y);
            107            vert.color = color;
            108            vbo.Add(vert);
            109
            110            vert.position = new Vector2(inner.z, inner.y);
            111            vert.color = color;
            112            vbo.Add(vert);
            113
            114            vert.position = new Vector2(inner.z, outer.y);
            115            vert.color = color;
            116            vbo.Add(vert);
            117        }

            118
            119        private void Update()
            120        {
            121            DoUpdate();
            122        }

            123    }

            124}

            125

            碼:



            posted on 2015-12-31 09:29 l1989 閱讀(9846) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): 游戲

            評(píng)論

            # re: [Unity3D]UGUI 新手引導(dǎo)遮罩控件  回復(fù)  更多評(píng)論   

            好像5.2不能用了 請(qǐng)問(wèn)有新的嗎
            2016-01-08 22:33 | aaaaa

            # re: [Unity3D]UGUI 新手引導(dǎo)遮罩控件  回復(fù)  更多評(píng)論   

            這個(gè)沒(méi)試過(guò),當(dāng)前版本用的5.01,不過(guò)原理應(yīng)該差不多哦
            2016-05-17 13:38 | l1989
            精品久久久久久99人妻| 久久国产午夜精品一区二区三区| 亚洲精品成人久久久| 99久久精品免费看国产一区二区三区 | 成人综合伊人五月婷久久| 国产成人综合久久综合| 香蕉久久影院| 久久久久亚洲精品无码蜜桃| 国产一区二区精品久久| 亚洲欧美另类日本久久国产真实乱对白| 2020久久精品亚洲热综合一本| 成人综合伊人五月婷久久| 久久伊人色| 色综合久久久久| 久久99热这里只有精品国产| 国产一区二区精品久久岳| 少妇内射兰兰久久| 少妇被又大又粗又爽毛片久久黑人| 久久狠狠爱亚洲综合影院| 精品久久人人妻人人做精品 | 一级A毛片免费观看久久精品| …久久精品99久久香蕉国产| 国产精品久久久久a影院| 久久福利片| 91麻精品国产91久久久久| 婷婷综合久久中文字幕蜜桃三电影 | 久久国产精品免费一区| 99久久婷婷免费国产综合精品| 久久久久久无码国产精品中文字幕 | 久久久久久久综合日本| 国产精品99久久精品爆乳| 97久久久精品综合88久久| 久久ww精品w免费人成| 波多野结衣AV无码久久一区| 人妻无码αv中文字幕久久琪琪布| 久久亚洲欧洲国产综合| 久久亚洲av无码精品浪潮| 久久久久亚洲AV成人网| 久久综合色之久久综合| 国产精品一区二区久久精品涩爱| 久久无码一区二区三区少妇|