InteractiveDummyGraphics.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. namespace CommonUnity3D.UGUI
  8. {
  9. /// <summary>
  10. /// 只用于透明并且需要点击的地方
  11. /// </summary>
  12. public class InteractiveDummyGraphics : Image
  13. {
  14. private DisplayNode mBinding;
  15. public DisplayNode Binding { get { return mBinding; } }
  16. public InteractiveDummyGraphics()
  17. {
  18. }
  19. protected override void Start()
  20. {
  21. this.mBinding = DisplayNode.AsDisplayNode(gameObject);
  22. this.raycastTarget = true;
  23. base.Start();
  24. }
  25. public override bool Raycast(Vector2 sp, Camera eventCamera)
  26. {
  27. if (mBinding.EnableChildren)
  28. {
  29. return base.Raycast(sp, eventCamera);
  30. }
  31. return false;
  32. }
  33. protected override void OnPopulateMesh(UnityEngine.UI.VertexHelper vh)
  34. {
  35. var size = rectTransform.sizeDelta;
  36. Color color = new Color(0, 0, 0, 0);
  37. vh.Clear();
  38. vh.AddVert(new Vector3(0, 0), color, Vector2.zero);
  39. vh.AddVert(new Vector3(size.x, 0), color, Vector2.zero);
  40. vh.AddVert(new Vector3(size.x, -size.y), color, Vector2.zero);
  41. vh.AddVert(new Vector3(0, -size.y), color, Vector2.zero);
  42. vh.AddTriangle(0, 1, 2);
  43. vh.AddTriangle(2, 3, 0);
  44. }
  45. }
  46. }