纳金网
标题:
【转】显示图片字符的脚本
[打印本页]
作者:
晃晃
时间:
2011-7-26 08:07
标题:
【转】显示图片字符的脚本
using UnityEngine;
namespace user
{//by gotoxy
class userFont
{
/*
LoadResources.FontTexture[]:为字体的纹理图片,格式为m*n个,每个字符大小相同,从空格(0x20)开始
使用的是Graphics.DrawTexture(),所以要在OnGUI()中调用
*/
private static int font_width = 16;
private static int font_height = 16;
private static int font_space_width = 4;//字符边沿空隙
private static int font_space_height = 2;//字符边沿空隙
private static int fontid = 0;
private static float zoom = 1.0f;
private static Color color = new Color(255, 0, 255);
//---------------------------------------------------------------------------------------------------------------
public static
void choosefont(int f)
{
if (f >= LoadResources.FontTexture.Length) return;
fontid = f;
if(fontid==0)
{
font_width = 16;
font_height = 16;
font_space_width = 4;
font_space_height = 2;
}
else if(fontid==1)
{
font_width = 16;
font_height = 16;
font_space_width = 4;
font_space_height = 2;
}
else
{
fontid = 0;
font_width = 16;
font_height = 16;
font_space_width = 4;
font_space_height = 2;
}
}
public static
void setcolor(Color usercolor)
{
color = usercolor;
}
public static
Color getcolor()
{
return color;
}
public static
void setzoom(float z)
{
zoom = z;
}
public static
void setsize(int w, int h)
{
font_width = w;
font_height = h;
}
public static
void setsize(float fw, float fh)
{
font_width = (int)((float)font_width * fw);
font_height = (int)((float)font_height * fh);
}
//---------------------------------------------------------------------------------------------------------------
public static
void user_puts(int x, int y, string str)
{
int FONT_W = font_width;
int FONT_H = font_height;
if (FONT_W == 0 || FONT_H == 0) return;
float font_base_w = (float)FONT_W / LoadResources.FontTexture[fontid].width; //fontWidth/LoadResources.FontTexture[fontid].width;
float font_base_h = (float)FONT_H / LoadResources.FontTexture[fontid].height; //fontHeight/LoadResources.FontTexture[fontid].height;
float Space_X = (float)font_space_width / LoadResources.FontTexture[fontid].width;//字符边沿空隙
float Space_Y = (float)font_space_height / LoadResources.FontTexture[fontid].height;
float tx, ty;
int i, a;
int XTile = LoadResources.FontTexture[fontid].width / FONT_W;
int YTile = LoadResources.FontTexture[fontid].height / FONT_H;
FONT_W = (int)((float)FONT_W * zoom);
FONT_H = (int)((float)FONT_H * zoom);
char[] buff = new char[str.Length];
buff = str.ToCharArray();
for (i = 0; i < buff.Length; i++)
{
if (buff >= 0x20) a = (int)(buff & 0xff) - 0x20;//从空格开始
else a = 0;
tx = (float)(a % XTile) * font_base_w;
ty = (float)(YTile - 1 - (a / XTile)) * font_base_h;
Graphics.DrawTexture(new Rect(x, y, FONT_W, FONT_H), LoadResources.FontTexture[fontid], new Rect(tx + Space_X, ty + Space_Y, font_base_w - 2 * Space_X, font_base_h - 2 * Space_Y), 0, 0, 0, 0, color);
x += FONT_W;
}
}
public static
void user_puts(int x, int y, string str, float userzoom)
{
int FONT_W = font_width;
int FONT_H = font_height;
if (FONT_W == 0 || FONT_H == 0) return;
float font_base_w = (float)FONT_W / LoadResources.FontTexture[fontid].width; //fontWidth/LoadResources.FontTexture[fontid].width;
float font_base_h = (float)FONT_H / LoadResources.FontTexture[fontid].height; //fontHeight/LoadResources.FontTexture[fontid].height;
float Space_X = (float)font_space_width / LoadResources.FontTexture[fontid].width;//字符边沿空隙
float Space_Y = (float)font_space_height / LoadResources.FontTexture[fontid].height;
float tx, ty;
int i, a;
int XTile = LoadResources.FontTexture[fontid].width / FONT_W;
int YTile = LoadResources.FontTexture[fontid].height / FONT_H;
FONT_W = (int)((float)FONT_W * userzoom);
FONT_H = (int)((float)FONT_H * userzoom);
char[] buff = new char[str.Length];
buff = str.ToCharArray();
for (i = 0; i < buff.Length; i++)
{
if (buff >= 0x20) a = (int)(buff & 0xff) - 0x20;
else a = 0;
tx = (float)(a % XTile) * font_base_w;
ty = (float)(YTile - 1 - (a / XTile)) * font_base_h;
Graphics.DrawTexture(new Rect(x, y, FONT_W, FONT_H), LoadResources.FontTexture[fontid], new Rect(tx + Space_X, ty + Space_Y, font_base_w - 2 * Space_X, font_base_h - 2 * Space_Y), 0, 0, 0, 0, color);
x += FONT_W;
}
}
public static
void user_puts(int x, int y, string str, float userzoom, Color usercolor)
{
int FONT_W = font_width;
int FONT_H = font_height;
if (FONT_W == 0 || FONT_H == 0) return;
float font_base_w = (float)FONT_W / LoadResources.FontTexture[fontid].width; //fontWidth/LoadResources.FontTexture[fontid].width;
float font_base_h = (float)FONT_H / LoadResources.FontTexture[fontid].height; //fontHeight/LoadResources.FontTexture[fontid].height;
float Space_X = (float)font_space_width / LoadResources.FontTexture[fontid].width;//字符边沿空隙
float Space_Y = (float)font_space_height / LoadResources.FontTexture[fontid].height;
float tx, ty;
int i, a;
int XTile = LoadResources.FontTexture[fontid].width / FONT_W;
int YTile = LoadResources.FontTexture[fontid].height / FONT_H;
FONT_W = (int)((float)FONT_W * userzoom);
FONT_H = (int)((float)FONT_H * userzoom);
char[] buff = new char[str.Length];
buff = str.ToCharArray();
for (i = 0; i < buff.Length; i++)
{
if (buff >= 0x20) a = (int)(buff & 0xff) - 0x20;
else a = 0;
tx = (float)(a % XTile) * font_base_w;
ty = (float)(YTile - 1 - (a / XTile)) * font_base_h;
Graphics.DrawTexture(new Rect(x, y, FONT_W, FONT_H), LoadResources.FontTexture[fontid], new Rect(tx + Space_X, ty + Space_Y, font_base_w - 2 * Space_X, font_base_h - 2 * Space_Y), 0, 0, 0, 0, usercolor);
x += FONT_W;
}
}
//---------------------------------------------------------------------------------------------------------------
public static
void user_puts(int x, int y, byte[] buff, int len)
{
int FONT_W = font_width;
int FONT_H = font_height;
if (FONT_W == 0 || FONT_H == 0) return;
float font_base_w = (float)FONT_W / LoadResources.FontTexture[fontid].width; //fontWidth/LoadResources.FontTexture[fontid].width;
float font_base_h = (float)FONT_H / LoadResources.FontTexture[fontid].height; //fontHeight/LoadResources.FontTexture[fontid].height;
float Space_X = (float)font_space_width / LoadResources.FontTexture[fontid].width;//字符边沿空隙
float Space_Y = (float)font_space_height / LoadResources.FontTexture[fontid].height;
float tx, ty;
int i, a;
int XTile = LoadResources.FontTexture[fontid].width / FONT_W;
int YTile = LoadResources.FontTexture[fontid].height / FONT_H;
FONT_W = (int)((float)FONT_W * zoom);
FONT_H = (int)((float)FONT_H * zoom);
for (i = 0; i < len && i < buff.Length; i++)
{
if (buff >= 0x20) a = (int)(buff & 0xff) - 0x20;
else a = 0;
tx = (float)(a % XTile) * font_base_w;
ty = (float)(YTile - 1 - (a / XTile)) * font_base_h;
Graphics.DrawTexture(new Rect(x, y, FONT_W, FONT_H), LoadResources.FontTexture[fontid], new Rect(tx + Space_X, ty + Space_Y, font_base_w - 2 * Space_X, font_base_h - 2 * Space_Y), 0, 0, 0, 0, color);
x += FONT_W;
}
}
public static
void user_puts(int x, int y, byte[] buff, int len, float userzoom)
{
int FONT_W = font_width;
int FONT_H = font_height;
if (FONT_W == 0 || FONT_H == 0) return;
float font_base_w = (float)FONT_W / LoadResources.FontTexture[fontid].width; //fontWidth/LoadResources.FontTexture[fontid].width;
float font_base_h = (float)FONT_H / LoadResources.FontTexture[fontid].height; //fontHeight/LoadResources.FontTexture[fontid].height;
float Space_X = (float)font_space_width / LoadResources.FontTexture[fontid].width;//字符边沿空隙
float Space_Y = (float)font_space_height / LoadResources.FontTexture[fontid].height;
float tx, ty;
int i, a;
int XTile = LoadResources.FontTexture[fontid].width / FONT_W;
int YTile = LoadResources.FontTexture[fontid].height / FONT_H;
FONT_W = (int)((float)FONT_W * userzoom);
FONT_H = (int)((float)FONT_H * userzoom);
for (i = 0; i < len && i < buff.Length; i++)
{
if (buff >= 0x20) a = (int)(buff & 0xff) - 0x20;
else a = 0;
tx = (float)(a % XTile) * font_base_w;
ty = (float)(YTile - 1 - (a / XTile)) * font_base_h;
Graphics.DrawTexture(new Rect(x, y, FONT_W, FONT_H), LoadResources.FontTexture[fontid], new Rect(tx + Space_X, ty + Space_Y, font_base_w - 2 * Space_X, font_base_h - 2 * Space_Y), 0, 0, 0, 0, color);
x += FONT_W;
}
}
public static
void user_puts(int x, int y, byte[] buff, int len, float userzoom, Color usercolor)
{
int FONT_W = font_width;
int FONT_H = font_height;
if (FONT_W == 0 || FONT_H == 0) return;
float font_base_w = (float)FONT_W / LoadResources.FontTexture[fontid].width; //fontWidth/LoadResources.FontTexture[fontid].width;
float font_base_h = (float)FONT_H / LoadResources.FontTexture[fontid].height; //fontHeight/LoadResources.FontTexture[fontid].height;
float Space_X = (float)font_space_width / LoadResources.FontTexture[fontid].width;//字符边沿空隙
float Space_Y = (float)font_space_height / LoadResources.FontTexture[fontid].height;
float tx, ty;
int i, a;
int XTile = LoadResources.FontTexture[fontid].width / FONT_W;
int YTile = LoadResources.FontTexture[fontid].height / FONT_H;
FONT_W = (int)((float)FONT_W * userzoom);
FONT_H = (int)((float)FONT_H * userzoom);
for (i = 0; i < len && i < buff.Length; i++)
{
if (buff >= 0x20) a = (int)(buff & 0xff) - 0x20;
else a = 0;
tx = (float)(a % XTile) * font_base_w;
ty = (float)(YTile - 1 - (a / XTile)) * font_base_h;
Graphics.DrawTexture(new Rect(x, y, FONT_W, FONT_H), LoadResources.FontTexture[fontid], new Rect(tx + Space_X, ty + Space_Y, font_base_w - 2 * Space_X, font_base_h - 2 * Space_Y), 0, 0, 0, 0, usercolor);
x += FONT_W;
}
}
}
}
作者:
彬彬
时间:
2011-8-2 21:23
在学习
作者:
菜刀吻电线
时间:
2011-8-20 11:14
密密麻麻的,有占难 啊
作者:
奇
时间:
2012-2-2 23:28
人过留名!
作者:
菜刀吻电线
时间:
2012-4-11 23:25
真不错,全存下来了.
作者:
C.R.CAN
时间:
2012-5-2 23:24
这么后现代
作者:
tc
时间:
2012-5-3 23:26
你们都躲开,我来顶
作者:
奇
时间:
2012-9-30 23:21
你们都躲开,我来顶
作者:
C.R.CAN
时间:
2012-10-20 23:26
读铁系缘分,顶铁系友情
作者:
王者再临
时间:
2012-10-21 00:41
我来顶下,支持楼主的技术交流
作者:
.
时间:
2012-10-25 21:19
顶起
作者:
.
时间:
2012-10-25 21:20
顶起
作者:
王者再临
时间:
2012-12-30 17:15
学习了,虽然还是有难度,谢谢楼主的用心
作者:
烟雨
时间:
2012-12-30 22:25
学习了,谢谢楼主的用心
作者:
狂风大尉
时间:
2012-12-30 23:16
谢谢楼主的帖子分享,学习了
作者:
晃晃
时间:
2013-1-28 23:26
读铁系缘分,顶铁系友情
作者:
Zack
时间:
2013-1-29 00:06
不错的分享,先收藏了
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者:
狂风大尉
时间:
2013-1-29 21:29
希望更多的朋友分享制作经验
作者:
菜刀吻电线
时间:
2013-2-19 23:31
非常感谢,管理员设置了需要对新回复进行审核,您的帖子通过审核后将被显示出来,现在将转入主题
作者:
王者再临
时间:
2013-2-27 03:35
希望有更多这方面的教程分享,谢谢!
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5