必要脚本,将此脚本挂在被检测的UI上(此脚本代替image)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CustomButtonArea : Image
{
public override bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera)
{
return GetComponent<PolygonCollider2D>().OverlapPoint(screenPoint);
}
}
利用此脚本做ui交互(采用2dui接口,OnMousDown()...等不管用)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
[RequireComponent(typeof(CustomButtonArea))]
public class Black_set : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler,IPointerClickHandler
{
private Image image_color;
private Color color_demo;
private bool stop;
private void Start()
{
image_color = GetComponent<Image>();
color_demo = image_color.color;
}
public void OnPointerClick(PointerEventData eventData)
{
if (Date_manager.color_set == 0)
{
//单机
if (eventData.clickCount == 1)
{
image_color.color = Color.black;
stop = true;
}
//双击
else if (eventData.clickCount == 2)
{
image_color.color = color_demo;
stop = false;
}
}
else if (Date_manager.color_set==1)
{
if (eventData.clickCount == 1)
{
image_color.color = Date_manager.color_demo;
stop = true;
}
else if (eventData.clickCount == 2)
{
image_color.color = color_demo;
stop = false;
}
}
}
public void OnPointerEnter(PointerEventData eventData)
{
if (Date_manager.color_set == 0)
{
if (stop == false)
{
image_color.color = Color.black;
}
}
else if (Date_manager.color_set == 1)
{
if (stop == false)
{
image_color.color = Date_manager.color_demo;
}
}
}
public void OnPointerExit(PointerEventData eventData)
{
if (Date_manager.color_set == 0)
{
if (stop == false)
{
image_color.color = color_demo;
}
}
else if (Date_manager.color_set == 1)
{
if (stop == false)
{
image_color.color = color_demo;
}
}
}
}