zoukankan      html  css  js  c++  java
  • UGUI不规则按钮实现思路

    根据图片的透明度来判断是否点击到了适当区域(如果a值是0,说明完全透明,则判断为没点击,否则判断为触发点击)

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    public class Demo : Image
    {
        Image image;
        void Start()
        {
            image = GetComponent<Image>();
        }
        public override bool IsRaycastLocationValid(Vector2 V, Camera C)       //继承Image并重写Image的这个方法  QQ 745701540
        {
            float a = 0;
            if (Input.GetMouseButtonDown(0))
            {
                //--------------------------------------------------------
                //鼠标坐标
                float x, y;
                x = Input.mousePosition.x;
                y = Input.mousePosition.y;
                //图片的实际宽高
                Rect R = new Rect();
                R.x = image.rectTransform.rect.width;
                R.y = image.rectTransform.rect.height;
                //图片左下角坐标
                Vector2 v_you = image.rectTransform.position - new Vector3(R.x / 2, R.y / 2);
    
                //真实像素点颜色值
                int x_z, y_z;
    
                x_z = (int)((x - v_you.x) / R.x * image.preferredWidth);//像素宽高比实际宽高
                y_z = (int)((y - v_you.y) / R.y * image.preferredHeight);
    
                a = image.sprite.texture.GetPixel(x_z, y_z).a;
            }
            if (a > 0)
            {
                Debug.Log("S");
                return true;
            }
            else
                return false;
        }
    }

    将脚本赋给Image图片,然后将图片的格式改为Advanced,  勾上Read/Write Enabled。

    因为继承了Image,所以脚本上也会出现Raycast Target等一系列属性,勾掉它,否则加上Image的,相当于两个触发,点击一次会触发两次方法。

  • 相关阅读:
    2015上海网络赛 A Puzzled Elena
    容斥原理——uva 10325 The Lottery
    2015北京网络赛B题 Mission Impossible 6
    2015北京网络赛A题The Cats' Feeding Spots
    POJ3087——map——Shuffle'm Up
    POJ3126——BFS——Prime Path
    POJ1426——BFS——Find The Multiple
    算法总结——Prim
    算法总结——Dijkstra
    算法总结——Floyed
  • 原文地址:https://www.cnblogs.com/Feiyuzhu/p/5690483.html
Copyright © 2011-2022 走看看