Unity3d使用texture画数字

来源:互联网 发布:nginx centos 重启 编辑:程序博客网 时间:2024/06/15 17:34
using UnityEngine;
using System.Collections;


public class DrawTexture : MonoBehaviour {
    private Object[] m_RedNumber; //存放数字,这里不能stexture2D,下面进行强制转化,否则在在start()里面读取不到,resource只能读取object类型的数据。
    public Transform m_DrawNumPoint;//数字显示的位置
    public int m_DrawNumber;//想要画的数字
// Use this for initialization
void Start () {


        m_RedNumber = Resources.LoadAll("RedNumber");//放texture的文件夹
}

// Update is called once per frame
void Update () {

}
    void OnGUI()
    {
        DrawTextureMethod(m_DrawNumPoint.position,m_DrawNumber,m_RedNumber);
        
    }
    public void DrawTextureMethod(Vector3 vect3,int number,Object[] obj)
    {
        float x= Vect3To2(vect3).x; 
        float y= Vect3To2(vect3).y;
        char[] chars= number.ToString().ToCharArray();   //将数字转化成字符数组。
        Texture2D tempTexture2d = (Texture2D)obj[0];
        float width = tempTexture2d.width;
        float height = tempTexture2d.height;
        foreach (char s in chars)      //s相当于s[i];
        {
            int i = int.Parse(s.ToString());  //将字符数组中的元素转化成数字
            GUI.DrawTexture(new Rect(x,y,width,height), (Texture2D)obj[i]);//画照片即数字
            x += width;
        }
    }
    /// <summary>
    ///  将3D坐标转换成2D坐标
    /// </summary>
    /// <param name="vect3"></param>
    /// <returns></returns>
    public Vector2 Vect3To2(Vector3 vect3)
    {
        Vector2 m_DrawNumPoint2D = Camera.main.WorldToScreenPoint(vect3);
        return m_DrawNumPoint2D; 
    }
}
0 0
原创粉丝点击