using UnityEngine; using System.Collections; using UnityEngine.UI; #if UNITY_EDITOR using UnityEditor; #endif [RequireComponent(typeof(PolygonCollider2D))] [AddComponentMenu("UI/UIPolygon")] public class UIPolygon : Image { private PolygonCollider2D _polygon = null; private PolygonCollider2D polygon { get{ if(_polygon == null ) _polygon = GetComponent(); return _polygon; } } protected UIPolygon() { useLegacyMeshGeneration = true; } protected override void OnPopulateMesh(VertexHelper vh) { vh.Clear(); } public override bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera) { return polygon.OverlapPoint( eventCamera.ScreenToWorldPoint(screenPoint)); } #if UNITY_EDITOR protected override void Reset() { base.Reset(); transform.localPosition = Vector3.zero; float w = (rectTransform.sizeDelta.x *0.5f) + 0.1f; float h = (rectTransform.sizeDelta.y*0.5f) + 0.1f; polygon.points = new Vector2[] { new Vector2(-w,-h), new Vector2(w,-h), new Vector2(w,h), new Vector2(-w,h) }; } #endif } #if UNITY_EDITOR [CustomEditor(typeof(UIPolygon), true)] public class UIPolygonInspector : Editor { public override void OnInspectorGUI() { } } #endif