RenderObject.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using UnityEngine;
  2. using System;
  3. namespace WXB
  4. {
  5. [RequireComponent(typeof(RectTransform))]
  6. [RequireComponent(typeof(CanvasRenderer))]
  7. [ExecuteInEditMode]
  8. public class RenderObject : MonoBehaviour
  9. {
  10. protected virtual void OnTransformParentChanged()
  11. {
  12. if (isActiveAndEnabled)
  13. return;
  14. UpdateRect();
  15. }
  16. protected void OnDisable()
  17. {
  18. if (m_CanvasRender == null)
  19. return;
  20. m_CanvasRender.Clear();
  21. }
  22. protected void Start()
  23. {
  24. UpdateRect();
  25. }
  26. RectTransform rect;
  27. [NonSerialized]
  28. private CanvasRenderer m_CanvasRender;
  29. public CanvasRenderer canvasRenderer
  30. {
  31. get
  32. {
  33. if (m_CanvasRender == null)
  34. m_CanvasRender = GetComponent<CanvasRenderer>();
  35. return m_CanvasRender;
  36. }
  37. }
  38. void UpdateRect()
  39. {
  40. if (rect == null)
  41. rect = GetComponent<RectTransform>();
  42. RectTransform parent = rect.parent as RectTransform;
  43. if (parent == null)
  44. return;
  45. rect.pivot = parent.pivot;
  46. rect.anchorMin = Vector2.zero;
  47. rect.anchorMax = Vector2.one;
  48. rect.offsetMax = Vector2.zero;
  49. rect.offsetMin = Vector2.zero;
  50. }
  51. public void FillMesh(Mesh workerMesh)
  52. {
  53. canvasRenderer.SetMesh(workerMesh);
  54. }
  55. public void UpdateMaterial(Material mat, Texture texture)
  56. {
  57. canvasRenderer.materialCount = 1;
  58. canvasRenderer.SetMaterial(mat, 0);
  59. canvasRenderer.SetTexture(texture);
  60. }
  61. }
  62. }