Unity3d使用texture画数字
2016-12-20 14:59
239 查看
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;
}
}
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;
}
}
相关文章推荐
- 基于Unity3D的Android游戏添加google广告的方法——使用AdMob
- Unity3d使用过程中常见的20个问题
- 使用 MonoDevelop 调试 Unity3D 的正确步骤
- unity3D中使用协程来做“多次调用一次更新”特性的一个大坑。
- Unity3D性能优化 - Update() 的使用
- Unity3d 射线测试+使用手势判断是否触碰了某物体
- Unity3d Time的使用
- unity3d 使用sqlite数据库
- Unity3d使用蓝牙(bluetooth)开发IOS点对点网络游戏
- 使用 MonoDevelop 调试 Unity3D 的正确步骤
- unity3d和下OrtHello的使用教程 (二) 移动物体,碰撞等
- 关于用Max导出Unity3D使用的FBX文件流程注解
- 使用SVN进行Unity3d版本管理总结
- 在Unity3D中使用ScriptableObject进行序列化
- Unity3d 如何使用程序集(续)
- 再次使用unity3d,本着迅速投入开发实践而非粗浅涉猎的心态
- Unity3D使用FreeImageNET
- 使用Unity3D时,UIScrollView不滚动问题的解决方法
- 基于Unity3D的Android游戏添加google广告的方法——使用AdMob
- Unity3D - 关于Delegate - SignalSlot信息槽的使用和SendMessage取替