源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
3.0 KiB

  1. using System;
  2. using UnityEngine;
  3. using System.Collections;
  4. using UnityEngine.Serialization;
  5. using UnityEngine.UI;
  6. public class BaseImage : MaskableGraphic,ISerializationCallbackReceiver, ILayoutElement, ICanvasRaycastFilter
  7. {
  8. // Use this for initialization
  9. void Start () {
  10. }
  11. // Update is called once per frame
  12. void Update () {
  13. }
  14. [FormerlySerializedAs("m_Frame")]
  15. [SerializeField]
  16. private Sprite m_Sprite;
  17. public Sprite sprite { get { return m_Sprite; } set { if (SetPropertyUtilityExt.SetClass(ref m_Sprite, value)) SetAllDirty(); } }
  18. [NonSerialized]
  19. private Sprite m_OverrideSprite;
  20. public Sprite overrideSprite { get { return m_OverrideSprite == null ? sprite : m_OverrideSprite; } set { if (SetPropertyUtilityExt.SetClass(ref m_OverrideSprite, value)) SetAllDirty(); } }
  21. /// <summary>
  22. /// Image's texture comes from the UnityEngine.Image.
  23. /// </summary>
  24. public override Texture mainTexture
  25. {
  26. get
  27. {
  28. return overrideSprite == null ? s_WhiteTexture : overrideSprite.texture;
  29. }
  30. }
  31. public float pixelsPerUnit
  32. {
  33. get
  34. {
  35. float spritePixelsPerUnit = 100;
  36. if (sprite)
  37. spritePixelsPerUnit = sprite.pixelsPerUnit;
  38. float referencePixelsPerUnit = 100;
  39. if (canvas)
  40. referencePixelsPerUnit = canvas.referencePixelsPerUnit;
  41. return spritePixelsPerUnit / referencePixelsPerUnit;
  42. }
  43. }
  44. /// <summary>
  45. /// 子类需要重写该方法来自定义Image形状
  46. /// </summary>
  47. /// <param name="vh"></param>
  48. protected override void OnPopulateMesh(VertexHelper vh)
  49. {
  50. base.OnPopulateMesh(vh);
  51. }
  52. #region ISerializationCallbackReceiver
  53. public void OnAfterDeserialize()
  54. {
  55. }
  56. //
  57. // 摘要:
  58. // Implement this method to receive a callback after unity serialized your object.
  59. public void OnBeforeSerialize()
  60. {
  61. }
  62. #endregion
  63. #region ILayoutElement
  64. public virtual void CalculateLayoutInputHorizontal() { }
  65. public virtual void CalculateLayoutInputVertical() { }
  66. public virtual float minWidth { get { return 0; } }
  67. public virtual float preferredWidth
  68. {
  69. get
  70. {
  71. if (overrideSprite == null)
  72. return 0;
  73. return overrideSprite.rect.size.x / pixelsPerUnit;
  74. }
  75. }
  76. public virtual float flexibleWidth { get { return -1; } }
  77. public virtual float minHeight { get { return 0; } }
  78. public virtual float preferredHeight
  79. {
  80. get
  81. {
  82. if (overrideSprite == null)
  83. return 0;
  84. return overrideSprite.rect.size.y / pixelsPerUnit;
  85. }
  86. }
  87. public virtual float flexibleHeight { get { return -1; } }
  88. public virtual int layoutPriority { get { return 0; } }
  89. #endregion
  90. #region ICanvasRaycastFilter
  91. public virtual bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera)
  92. {
  93. return true;
  94. }
  95. #endregion
  96. }