wangguan
2020-10-27 f79f61b93d8061d89dde18063526e417ffc409d2
简单修改新手引导
9 files modified
121 ■■■■ changed files
Assets/Materials/Guide/RectGuidance.mat 8 ●●●● patch | view | raw | blame | history
Assets/Resources/GuideFile/RectGuidance_Panel.prefab 8 ●●●●● patch | view | raw | blame | history
Assets/Resources/UI/Guide/GuidePanel.prefab 6 ●●●● patch | view | raw | blame | history
Assets/Scenes/TestGuide.unity 8 ●●●● patch | view | raw | blame | history
Assets/Scripts/Guide/GuidePanel.cs 53 ●●●●● patch | view | raw | blame | history
Assets/Scripts/Guide/ImageFire1.cs 1 ●●●● patch | view | raw | blame | history
Assets/Scripts/Guide/ImageFire2.cs 1 ●●●● patch | view | raw | blame | history
Assets/Scripts/Guide/ImageSkill.cs 1 ●●●● patch | view | raw | blame | history
Assets/Scripts/Guide/Mask/RectGuidance.cs 35 ●●●●● patch | view | raw | blame | history
Assets/Materials/Guide/RectGuidance.mat
@@ -69,8 +69,8 @@
    - _OcclusionStrength: 1
    - _Parallax: 0.02
    - _Slider: 81.39478
    - _SliderX: 75.22463
    - _SliderY: 80.22465
    - _SliderX: 189
    - _SliderY: 73.5
    - _SmoothnessTextureChannel: 0
    - _SpecularHighlights: 1
    - _SrcBlend: 1
@@ -83,7 +83,7 @@
    - _UseUIAlphaClip: 0
    - _ZWrite: 1
    m_Colors:
    - _Center: {r: 6, g: -198, b: 0, a: 0}
    - _Center: {r: -3, g: -862, b: 0, a: 0}
    - _Color: {r: 1, g: 1, b: 1, a: 1}
    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
  m_BuildTextureStacks: []
  m_BuildTextureStacks: []
Assets/Resources/GuideFile/RectGuidance_Panel.prefab
@@ -60,13 +60,15 @@
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 2100000, guid: e5315acd3858d324c92f6c66846963b7, type: 2}
  m_Color: {r: 0, g: 0, b: 0, a: 0.392}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
  m_Type: 1
  m_Sprite: {fileID: 21300000, guid: 7545f6da4eda5274396e5021d128679d, type: 3}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
Assets/Resources/UI/Guide/GuidePanel.prefab
@@ -496,7 +496,7 @@
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 1, y: 1}
  m_AnchoredPosition: {x: 171.39998, y: -637.90015}
  m_AnchoredPosition: {x: 171.39996, y: -637.90015}
  m_SizeDelta: {x: -586.65216, y: -1768.8896}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7524990171873018580
@@ -626,7 +626,7 @@
  m_Name: 
  m_EditorClassIdentifier: 
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 1}
  m_Color: {r: 1, g: 1, b: 1, a: 0}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
@@ -2010,7 +2010,7 @@
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8765142430134729489}
  m_Enabled: 0
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name: 
Assets/Scenes/TestGuide.unity
@@ -512,13 +512,13 @@
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1844090207}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
  m_LocalPosition: {x: 0, y: 1, z: -10}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!222 &1913359152509146050
CanvasRenderer:
  m_ObjectHideFlags: 0
@@ -792,8 +792,8 @@
  m_GameObject: {fileID: 1913359152602302161}
  m_Enabled: 1
  serializedVersion: 3
  m_RenderMode: 0
  m_Camera: {fileID: 0}
  m_RenderMode: 1
  m_Camera: {fileID: 1844090209}
  m_PlaneDistance: 100
  m_PixelPerfect: 0
  m_ReceivesEvents: 1
Assets/Scripts/Guide/GuidePanel.cs
@@ -57,8 +57,9 @@
    void Awake()
    {
        tmpMask = GetComponent<Image>();
        tmpMask.enabled = false;
        backgroundImg = transform.Find("Button").GetComponent<Image>();
        backgroundImg.color = new Color(1.0f, 1.0f, 1.0f, 0);
        towerBuyBtn = GameObject.Find("MainUI/TowerBuyBtn");
        tipsUI = transform.Find("Tips").gameObject;
        tipsUI.transform.SetAsLastSibling();//把tips放在最下面
@@ -111,8 +112,10 @@
    /// <param name="active"></param>
    public void SetGuideUI(bool active)
    {
        if (backgroundImg.raycastTarget != active) backgroundImg.raycastTarget = active;
        tipsUI.SetActive(active);
        if (backgroundImg.enabled != active)
            backgroundImg.enabled = active;
        if (tipsUI.activeSelf != active)
            tipsUI.SetActive(active);
    }
    //开始打印文字
@@ -143,7 +146,7 @@
            SetRimActive(true);
            AddButtonListener(towerBuyBtn, ac);
            Image btnImg = towerBuyBtn.GetComponent<Image>();
            InitRectGuidance(btnImg);
            InitRectGuidance(btnImg, 189, 73.5f);
            SetRimPos(towerBuyBtn);
            maskObj.ShowImmediately();
@@ -171,6 +174,8 @@
    {
        fire2.gameObject.SetActive(true);
        fire2.enabled = false;
        DestoryButtonListener(towerBuyBtn);
        //RemoveButtonListener(towerBuyBtn);
    }
    /// <summary>
@@ -180,9 +185,7 @@
    public void Step2(int currentIndex)
    {
        backgroundImg.raycastTarget = true;
        RemoveButtonListener(towerBuyBtn);
        //RemoveButtonListener(towerBuyBtn);
        SetRimActive(false);
        CloseMask();
    }
@@ -194,8 +197,8 @@
    {
        if (currentIndex == 0)
        {
            backgroundImg.raycastTarget = false;
            backgroundImg.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);
            tmpMask.enabled = true;
            SetGuideUI(false);
            SetRimPos(fire2.gameObject);
@@ -219,10 +222,12 @@
    {
        if (currentIndex == 0)
        {
            tmpMask.enabled = false;
            SetRimActive(true);
            Image btnImg = transform.Find("Image_TowerPos").GetComponent<Image>();
            towerPos.enabled = true;
            InitRectGuidance(btnImg);
            InitRectGuidance(btnImg, 75, 80);
            SetRimPos(btnImg.gameObject);
            maskObj.ShowImmediately();
            StartCoroutine(ShowRimTip(str));
@@ -238,7 +243,7 @@
        {
            CloseMask();
            SetRimActive(false);
            backgroundImg.color = new Color(1.0f, 1.0f, 1.0f, 0);
        }
    }
@@ -254,7 +259,7 @@
            GameObject go = transform.Find("Image_TowerPos2").gameObject;
            Image btnImg = go.GetComponent<Image>();
            InitRectGuidance(btnImg);
            InitRectGuidance(btnImg, 75, 80);
            SetRimPos(go);
            maskObj.ShowImmediately();
            StartCoroutine(ShowRimTip(str));
@@ -264,7 +269,6 @@
    //介绍水元素
    public void Step8()
    {
        backgroundImg.color = new Color(1.0f, 1.0f, 1.0f, 0);
        SetGuideUI(true);
        SetRimActive(false);
        CloseMask();
@@ -285,7 +289,7 @@
            AddButtonListener(towerBuyBtn, ac);
            Image btnImg = towerBuyBtn.GetComponent<Image>();
            InitRectGuidance(btnImg);
            InitRectGuidance(btnImg, 189, 73.5f);
            SetRimPos(towerBuyBtn);
            maskObj.ShowImmediately();
        }
@@ -293,7 +297,7 @@
        {
            GameObject go = transform.Find("Image_TowerPos2").gameObject;
            Image btnImg = go.GetComponent<Image>();
            InitRectGuidance(btnImg);
            InitRectGuidance(btnImg, 75, 80);
            SetRimPos(go);
            maskObj.ShowImmediately();
        }
@@ -303,9 +307,9 @@
    public void Step9_1()
    {
        RemoveButtonListener(towerBuyBtn);
        water1.gameObject.SetActive(true);
        towerPos2.enabled = true;
        DestoryButtonListener(towerBuyBtn);
    }
@@ -326,6 +330,8 @@
    {
        if (currentIndex == 0)
        {
            tmpMask.enabled = true;
            SetGuideUI(false);
            SetRimActive(true);
            SetRimPos(skill.gameObject);
@@ -342,6 +348,7 @@
    public void Step12()
    {
        image_SkillRim.gameObject.SetActive(false);
        tmpMask.enabled = false;
        SetGuideUI(true);
        SetRimActive(false);
@@ -399,13 +406,15 @@
    /// 抠出来一个区域
    /// </summary>
    /// <param name="target"></param>
    void InitRectGuidance(Image target)
    void InitRectGuidance(Image target, float x, float y)
    {
        if (!maskObj.gameObject.activeSelf)
        {
            maskObj.gameObject.SetActive(true);
        }
        maskObj.Init(target);
        //maskObj.Init(target);
        maskObj.InitForCamera(target, x, y);
    }
    /// <summary>
@@ -439,6 +448,14 @@
        eventTriggerListener.RemoveListener(go);
    }
    private void DestoryButtonListener(GameObject go)
    {
        EventTriggerListener eventTriggerListener = EventTriggerListener.GetListener(go);
        if (eventTriggerListener != null)
            Destroy(eventTriggerListener);
    }
    #endregion
Assets/Scripts/Guide/ImageFire1.cs
@@ -77,6 +77,7 @@
            return;
        }
        RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, eventData.position, eventData.enterEventCamera, out dragPos);
        //dragPos.z = 0;
        rectTransform.position = dragPos;
    }
Assets/Scripts/Guide/ImageFire2.cs
@@ -24,6 +24,7 @@
    public void OnDrag(PointerEventData eventData)
    {
        RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, eventData.position, eventData.enterEventCamera, out dragPos);
        //dragPos.z = 0;
        rectTransform.position = dragPos;
    }
Assets/Scripts/Guide/ImageSkill.cs
@@ -24,6 +24,7 @@
    public void OnDrag(PointerEventData eventData)
    {
        RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, eventData.position, eventData.enterEventCamera, out dragPos);
        //dragPos.z = 0;
        rectTransform.position = dragPos;
    }
Assets/Scripts/Guide/Mask/RectGuidance.cs
@@ -54,18 +54,25 @@
    {
        instance = this;
        canvas = GameObject.Find("MainUI").GetComponent<Canvas>();
        eventPenetrate = GetComponent<GuidanceEventPenetrate>();
        material = GetComponent<Image>().material;
    }
    public void Init(Image target)
    {
        this.target = target;
        eventPenetrate = GetComponent<GuidanceEventPenetrate>();
        if (eventPenetrate != null)
        {
            eventPenetrate.SetTargetImage(target);
        }
        //获取高亮区域的四个顶点的世界坐标
        target.rectTransform.GetWorldCorners(corners);
        for (int i = 0; i < corners.Length; i++)
        {
            Debug.Log("corners i:" + i + " vec3:" + corners[i]);
        }
        //计算高亮显示区域在画布中的范围
        targetOffsetX = Vector2.Distance(WorldToCanvasPos(canvas, corners[0]), WorldToCanvasPos(canvas, corners[3])) / 2f;
        targetOffsetY = Vector2.Distance(WorldToCanvasPos(canvas, corners[0]), WorldToCanvasPos(canvas, corners[1])) / 2f;
@@ -101,6 +108,24 @@
        material.SetFloat("_SliderX", currentOffsetX);
        material.SetFloat("_SliderY", currentOffsetY);
    }
    public void InitForCamera(Image target, float x, float y)
    {
        this.target = target;
        if (eventPenetrate != null)
        {
            eventPenetrate.SetTargetImage(target);
        }
        Vector2 center = target.GetComponent<RectTransform>().anchoredPosition;
        material.SetVector("_Center", center);
        material.SetFloat("_SliderX", x);
        material.SetFloat("_SliderY", y);
    }
    /// <summary>
    /// 收缩速度
    /// </summary>
@@ -126,17 +151,19 @@
    //立刻显示阴影区域
    public void ShowImmediately()
    {
        return;
        float valueX = Mathf.SmoothDamp(currentOffsetX, targetOffsetX, ref shrinkVelocityX, 0);
        float valueY = Mathf.SmoothDamp(currentOffsetY, targetOffsetY, ref shrinkVelocityY, 0);
        if (!Mathf.Approximately(valueX, currentOffsetX))
        {
            currentOffsetX = valueX;
            material.SetFloat("_SliderX", currentOffsetX);
            material.SetFloat("_SliderX", targetOffsetX);
        }
        if (!Mathf.Approximately(valueY, currentOffsetY))
        {
            currentOffsetY = valueY;
            material.SetFloat("_SliderY", currentOffsetY);
            material.SetFloat("_SliderY", targetOffsetY);
        }
    }
@@ -149,7 +176,9 @@
    private Vector2 WorldToCanvasPos(Canvas canvas, Vector3 world)
    {
        Vector2 position;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, world, canvas.GetComponent<Camera>(), out position);
        return position;
    }
}