|
|
- using System;
- using UnityEngine;
- using System.Collections;
- using UnityEngine.Serialization;
- using UnityEngine.UI;
-
- public class BaseImage : MaskableGraphic,ISerializationCallbackReceiver, ILayoutElement, ICanvasRaycastFilter
- {
-
- // Use this for initialization
- void Start () {
-
- }
-
- // Update is called once per frame
- void Update () {
-
- }
-
- [FormerlySerializedAs("m_Frame")]
- [SerializeField]
- private Sprite m_Sprite;
- public Sprite sprite { get { return m_Sprite; } set { if (SetPropertyUtilityExt.SetClass(ref m_Sprite, value)) SetAllDirty(); } }
-
- [NonSerialized]
- private Sprite m_OverrideSprite;
- public Sprite overrideSprite { get { return m_OverrideSprite == null ? sprite : m_OverrideSprite; } set { if (SetPropertyUtilityExt.SetClass(ref m_OverrideSprite, value)) SetAllDirty(); } }
-
-
- /// <summary>
- /// Image's texture comes from the UnityEngine.Image.
- /// </summary>
- public override Texture mainTexture
- {
- get
- {
- return overrideSprite == null ? s_WhiteTexture : overrideSprite.texture;
- }
- }
-
- public float pixelsPerUnit
- {
- get
- {
- float spritePixelsPerUnit = 100;
- if (sprite)
- spritePixelsPerUnit = sprite.pixelsPerUnit;
-
- float referencePixelsPerUnit = 100;
- if (canvas)
- referencePixelsPerUnit = canvas.referencePixelsPerUnit;
-
- return spritePixelsPerUnit / referencePixelsPerUnit;
- }
- }
-
- /// <summary>
- /// 子类需要重写该方法来自定义Image形状
- /// </summary>
- /// <param name="vh"></param>
- protected override void OnPopulateMesh(VertexHelper vh)
- {
- base.OnPopulateMesh(vh);
- }
-
- #region ISerializationCallbackReceiver
- public void OnAfterDeserialize()
- {
- }
-
- //
- // 摘要:
- // Implement this method to receive a callback after unity serialized your object.
- public void OnBeforeSerialize()
- {
- }
- #endregion
-
- #region ILayoutElement
- public virtual void CalculateLayoutInputHorizontal() { }
- public virtual void CalculateLayoutInputVertical() { }
-
- public virtual float minWidth { get { return 0; } }
-
- public virtual float preferredWidth
- {
- get
- {
- if (overrideSprite == null)
- return 0;
- return overrideSprite.rect.size.x / pixelsPerUnit;
- }
- }
-
- public virtual float flexibleWidth { get { return -1; } }
-
- public virtual float minHeight { get { return 0; } }
-
- public virtual float preferredHeight
- {
- get
- {
- if (overrideSprite == null)
- return 0;
- return overrideSprite.rect.size.y / pixelsPerUnit;
- }
- }
-
- public virtual float flexibleHeight { get { return -1; } }
-
- public virtual int layoutPriority { get { return 0; } }
- #endregion
-
- #region ICanvasRaycastFilter
- public virtual bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera)
- {
- return true;
- }
- #endregion
-
- }
|