HUD
工程项目
Info
classUDNGame extendsUTGame;
defaultproperties
{
bUseClassicHUD=true //UDK集成ScalForm后要使用Canvas,这个值就是True
HUDType=class'CanvasHUD.UDNHUD'
}
HUD
DrawText::
classUDNHUD extendsHUD;
function DrawHUD()
{
super.DrawHUD();
//描画玩家名称。
Canvas.DrawText(UTPlayerController(PlayerOwner).PlayerReplicationInfo.PlayerName);
}
defaultproperties
{
}
描绘结果:
由结果可以看出Canvas的工作方式。
用了默认的字体,颜色,字体大小,默认的2D屏幕坐标(0,0)位置。
项目扩展DrawText:
比如:理想中的玩家名字是红色,有更漂亮的字体,有字体大小和位置等。。。。。。
只要在DrawText函数前把它们设好就可以了。。。
classUDNHUD extendsHUD;
varFont PlayerFont;
function DrawHUD()
{
localVector2D TextSize;
super.DrawHUD();
//描画玩家名称。
Canvas.Font= PlayerFont; //字体
Canvas.SetDrawColorStruct(RedColor); //颜色
Canvas.SetPos(SizeX/2,SizeY - 64); //位置
Canvas.TextSize(UTPlayerController(PlayerOwner).PlayerReplicationInfo.PlayerName,TextSize.X, TextSize.Y); //计算字体大小和缩放
Canvas.DrawText(UTPlayerController(PlayerOwner).PlayerReplicationInfo.PlayerName);
}
defaultproperties
{
PlayerFont=MultiFont'UI_Fonts_Final.menus.Fonts_Positec'
}
描绘结果
描画纹理
自带的2D纹理(粒子发射器图标),32X32大小,有Alpha通道,显于出图中类似于“十”的五个颜色不同的图案。Icon
描画中间那个图案:
classUDNHUD extendsHUD;
varCanvasIconHealthIcon;
function DrawHUD()
{
super.DrawHUD();
Canvas.DrawIcon(HealthIcon,SizeX/2.0, 0.0, 10.0);
}
defaultproperties
{ //U和V的起点值按贴图左上角计算
HealthIcon=(Texture=Texture2D'EditorResources.S_Emitter',U=10,V=10,UL=15,VL=15)
}
改变颜色
classUDNHUD extendsHUD;
varTexture2DDefaultTexture;
function DrawHUD()
{
super.DrawHUD();
Canvas.SetPos(SizeX/2-100,SizeY/2-100); //位置
Canvas.DrawTileStretched(DefaultTexture,200,200, 0, 0, 32, 32, ColorToLinearColor(GreenColor),false,false, 1.0);
}
defaultproperties
{
DefaultTexture=Texture2D'EditorResources.S_Emitter'
}
多个元素画在同一位置,先画底层最后画上层。
更多参考:
udn.epicgames.com/Three/CanvasTechnicalGuideCH.html