Unity3d里面做描边字和阴影字的简单办法
描边字有啥好处呢?在游戏里,场景是活动的,如果用单色的字,有些时候是看不清的。比如你显示的字是浅色,场景切换到太阳,字就看不清了,如果是深色,切换到晚上,也看不清了。用描边的字就能解决这个问题,很多游戏也都在用。
u3d里面做描边字其实很简单,看到代码之后别打我,这是最简单的办法。
function OnGUI(){
GUI.skin=chineseSkin;
//GUI.Button(Rect(10,10,100,40),show);
var color = Color (0.6, 0.1, 0.5, 1); //文字颜色
var pcolor = Color (1, 1, 1, 1); //描边颜色
var pos=Rect(10,10,100,40) ;
MakeStroke(pos, "你好", color, pcolor, 1);
}
function MakeStroke(position : Rect, txt:String, txtColor, outlineColor, outlineWidth ){
position.y-=outlineWidth;
GUI.color=outlineColor;
GUI.Label(position, txt);
position.y+=outlineWidth*2;
GUI.Label(position, txt);
position.y-=outlineWidth;
position.x-=outlineWidth;
GUI.Label(position, txt);
position.x+=outlineWidth*2;
GUI.Label(position, txt);
position.x-=outlineWidth;
GUI.color=txtColor;
GUI.Label(position, txt);
}
用法:
MakeStroke 第一个参数 位置,是个rect,第二个参数是文字,第三个参数是文字颜色,第四个参数是描边颜色,第五个参数是宽度。
阴影字应运而生
function MakeShadow(position : Rect, txt:String, txtColor, shadowColor, shadowWidth ){
for (var i=0;i<shadowWidth;i++){
position.x+=1;
position.y+=1;
GUI.color=shadowColor;
GUI.Label(position, txt);
}
position.x-=shadowWidth;
position.y-=shadowWidth;
GUI.color=txtColor;
GUI.Label(position, txt);