纳金网

标题: 【转】显示图片字符的脚本 [打印本页]

作者: 晃晃    时间: 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