少年修仙传客户端代码仓库
client_linchunjie
2018-08-28 d967a51a34fe3ac68267b29b6f2ea4cb509d4977
UI/Core/TextImage.cs
@@ -4,75 +4,75 @@
using UnityEngine.UI;
using UnityEngine.Sprites;
public class TextImage : TextEx
public class TextImage : TextEx
{
    [SerializeField] Sprite m_Sprite;
    public Sprite sprite {
        get { return m_Sprite; }
        set {
            m_Sprite = value;
            SetVerticesDirty();
        }
    }
    protected override void Awake()
    {
        base.Awake();
        base.font = FontUtility.preferred;
        base.material = MaterialUtility.hudMaterial;
        if (sprite != null)
        {
            base.material.SetTexture("_Tex2", sprite.texture);
        }
    }
    protected override void OnPopulateMesh(VertexHelper vh)
    {
        if (sprite != null)
        {
            vh.Clear();
        }
        base.OnPopulateMesh(vh);
        if (sprite != null)
        {
            var size = new Vector2(rectTransform.rect.width, rectTransform.rect.height);
            var positions = new Vector3[4];
            var uvs = new Vector2[4];
            var uv = sprite != null ? DataUtility.GetOuterUV(sprite) : Vector4.zero;
            var width = rectTransform.rect.width;
            var height = rectTransform.rect.height;
            var uvCenterX = (uv.x + uv.z) * 0.5f;
            var uvCenterY = (uv.y + uv.w) * 0.5f;
            var uvScaleX = (uv.z - uv.x) / width;
            var uvScaleY = (uv.w - uv.y) / height;
            var position = positions[0] = new Vector2(-size.x * 0.5f, -size.y * 0.5f);
            uvs[0] = new Vector2(position.x * uvScaleX + uvCenterX, position.y * uvScaleY + uvCenterY);
            position = positions[1] = new Vector2(size.x * 0.5f, -size.y * 0.5f);
            uvs[1] = new Vector2(position.x * uvScaleX + uvCenterX, position.y * uvScaleY + uvCenterY);
            position = positions[2] = new Vector2(size.x * 0.5f, size.y * 0.5f);
            uvs[2] = new Vector2(position.x * uvScaleX + uvCenterX, position.y * uvScaleY + uvCenterY);
            position = positions[3] = new Vector2(-size.x * 0.5f, size.y * 0.5f);
            uvs[3] = new Vector2(position.x * uvScaleX + uvCenterX, position.y * uvScaleY + uvCenterY);
            for (var i = 0; i < 4; i++)
            {
                vh.AddVert(positions[i], color, uvs[i], uvs[i], new Vector3(1, 0, -1), new Vector4(1, 0, 0, -1));
            }
            vh.AddTriangle(0, 1, 2);
            vh.AddTriangle(2, 3, 0);
        }
    public Sprite sprite {
        get { return m_Sprite; }
        set {
            m_Sprite = value;
            SetVerticesDirty();
        }
    }
    protected override void Awake()
    {
        base.Awake();
        base.font = FontUtility.preferred;
        base.material = MaterialUtility.hudMaterial;
        if (sprite != null)
        {
            base.material.SetTexture("_Tex2", sprite.texture);
        }
    }
    protected override void OnPopulateMesh(VertexHelper vh)
    {
        if (sprite != null)
        {
            vh.Clear();
        }
        base.OnPopulateMesh(vh);
        if (sprite != null)
        {
            var size = new Vector2(rectTransform.rect.width, rectTransform.rect.height);
            var positions = new Vector3[4];
            var uvs = new Vector2[4];
            var uv = sprite != null ? DataUtility.GetOuterUV(sprite) : Vector4.zero;
            var width = rectTransform.rect.width;
            var height = rectTransform.rect.height;
            var uvCenterX = (uv.x + uv.z) * 0.5f;
            var uvCenterY = (uv.y + uv.w) * 0.5f;
            var uvScaleX = (uv.z - uv.x) / width;
            var uvScaleY = (uv.w - uv.y) / height;
            var position = positions[0] = new Vector2(-size.x * 0.5f, -size.y * 0.5f);
            uvs[0] = new Vector2(position.x * uvScaleX + uvCenterX, position.y * uvScaleY + uvCenterY);
            position = positions[1] = new Vector2(size.x * 0.5f, -size.y * 0.5f);
            uvs[1] = new Vector2(position.x * uvScaleX + uvCenterX, position.y * uvScaleY + uvCenterY);
            position = positions[2] = new Vector2(size.x * 0.5f, size.y * 0.5f);
            uvs[2] = new Vector2(position.x * uvScaleX + uvCenterX, position.y * uvScaleY + uvCenterY);
            position = positions[3] = new Vector2(-size.x * 0.5f, size.y * 0.5f);
            uvs[3] = new Vector2(position.x * uvScaleX + uvCenterX, position.y * uvScaleY + uvCenterY);
            for (var i = 0; i < 4; i++)
            {
                vh.AddVert(positions[i], color, uvs[i], uvs[i], new Vector3(1, 0, -1), new Vector4(1, 0, 0, -1));
            }
            vh.AddTriangle(0, 1, 2);
            vh.AddTriangle(2, 3, 0);
        }
    }