用UGUI创建一个image图片组件,然后在image组件上添加button组件,并且添加上polygon collider 2D功能,然后圈出要点击的区域
并且把canvas上的Graphicc Raycaster组件移除掉,并在canvas上添加如下代码:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using UnityEngine.EventSystems;
public class CustomRaycaster : GraphicRaycaster
{
private List _toBeRemoved = new List();
public override void Raycast(PointerEventData eventData, List resultAppendList)
{
base.Raycast(eventData, resultAppendList);
_toBeRemoved.Clear();
foreach (var result in resultAppendList)
{
var polygon2D = result.gameObject.GetComponent();
if (!polygon2D)
continue;
if (!polygon2D.OverlapPoint(eventData.position))
_toBeRemoved.Add(result);
}
if (_toBeRemoved.Count > 0)
resultAppendList.RemoveAll(r => _toBeRemoved.Contains(r));
}
}
当我们把上述步骤做完后,我们可以运行游戏,点击我们之前选定的区域,我们可以看到效果,如果点击没有选定的区域,我们则无法看到效果!