概要
注意:このチュートリアルでのHUDの実装方法は古い方法です。
最新のHUDはScaleformの実装が推奨されています。
イントロダクション
このチュートリアルではUDKで基本的なHUDの作例をあなたを示します。
このチュートリアルはあなたがプログラミングの基本を知っていると仮定します。
1、ファイルロケーション
今回の例では、UDK\UDK-XXXX-XX\Development\Src\MyFolder\Classesに我々のクラスを置きます。
(チュートリアルの原文ではMyFolderにMyHud.ucを置く事になっていますが実際に試してみるとうまくいかなかったので、翻訳の際のインゲームテストではUTGameフォルダに置いています。)
2、MyGame" class
我々のHUDを作る前に我々は新しいHUDを使うために、我々の「Game」のクラスを指定します。
あなたの「Game」クラスのあなたの基本的なプロパティを変えるか、新しいクラスを作成します:
class MyGame extends UTDeathmatch
config(MyGame);
defaultproperties
{
HUDType=class'MyFolder.MyHUD'
}
3、"MyHud" class
私は、私がたくさんのものを作ることができるMyHUDクラスでしばしば使う機能と変数を記述することから始めます。あなたがより知っていたいならば、あなたも「キャンバス」クラスを見てみることができます!
- SetPos(float X, float Y):
このfunction は、Top/左翼角からあなた自身をスクリーンに置いて、この位置から異なるものを示すのに用いられます。
- SetDrawColor(byte R, byte G, byte B, optional byte A ) :あなたがHUDを描写するために使う色(赤・緑・青のバリュー)と透明度(アルファ価値で)をセットします。
- var font Font :この変数は、HUDについて書くことの用途にフォントを選ぶことができます。私は、非常にしばしば統合化機能を使用します:
Canvas.Font = class'Engine'.static.GetSmallFont();
Canvas.Font = class'Engine'.static.GetMediumFont();
Canvas.Font = class'Engine'.static.GetLargeFont();
- DrawText(string S) / DrawTextCentered(string S) :あなたが前の変数と機能の利用に位置、色とフォントを選んだあと、テキスト(第2の機能によって中心におかれる)をHUDに表示します。
- DrawRect(float RectX, float RectY, optional Texture Tex = DefaultTexture) :
RectX * RectYサイズの長方形を描くことができます。あなたがテクスチャーを置かないならば、長方形はあなたが以前に選んだ単純な色で満たされます。
- DrawBox(float width, float height) :
Width * Heightサイズの長方形の形を示すことを放します。あなたは、以前前に位置と色を選ばなければなりませんでした。
- DrawTile(Texture Tex, float XL, float YL, float U, float V, float UL, float VL) / DrawMaterialTile (Material Mat, float XL, float YL, float U, float V, float UL, float VL) :
TextureまたはMaterialを我々が水平および垂直のものでXLとYLを通して登るように指定するHUDに引き寄せることができます。パラメータUとVは、テクスチャーを移すことができます。例えば、0で異なるUで、得られることができます:
- var float ClipX / var float ClipY
これらの2つの変数は、あなたのresolution(すなわち画面の右下隅のコーディネート)の幅と高さを示します。
以上でで主要なfunctionsの説明は終わりです。
あなたは、これらのfunctionsがこのクラス(あなたがすでに気がつくかもしれなくて)の特質「キャンバス」で「HUD」クラスですぐに以外利用できないということを知っていなければなりません。これは、各々の時間「Canvas.TheFunction()」を必要とします。まとめます、我々は我々の基本HUDクラスを作成することができます:
class MyHUD extends UTHUD;
function DrawGameHud()
{
// This is where you put the features seen before as follows:
// Canvas.TheFunction ()
}
defaultproperties
{
}
「DrawGameHud」()」はHUDを書き直す各々の新たにされたイメージと呼ばれています。ここでは、我々はしたがって、示されることを再定義します。
スクリーンの中心で「Hello World」を表示するサンプルの例:
class MyHUD extends UTHUD;
function DrawGameHud()
{
Canvas.SetPos(Canvas.ClipX/2,Canvas.ClipY/2);
Canvas.SetDrawColor(255,255,255,255);
Canvas.Font = class'Engine'.static.GetMediumFont();
Canvas.DrawTextCentered("Hello World");
}
defaultproperties
{
}
4、サンプル
今回はHUDの為に役に立つ小さい機能拡張を行います。具体的には以下の様なバーとして変数のバリューをスクリーンに表示してみます。
このバーは以下の2つの結果を表示しています。
- A title
- 10個の長方形 (8px * 12px) それと透明度と色 (変数の値に応じて変化します。)
サンプルコード:
function DrawBar(String Title, float Value, float MaxValue,int X, int Y, int R, int G, int B)
{
local int PosX,NbCases,i;
PosX = X; // Where we should draw the next rectangle
NbCases = 10 * Value / MaxValue; // Number of active rectangles to draw
i=0; // Number of rectangles already drawn
/* Displays active rectangles */
while(i < NbCases && i < 10)
{
Canvas.SetPos(PosX,Y);
Canvas.SetDrawColor(R,G,B,200);
Canvas.DrawRect(8,12);
PosX += 10;
i++;
}
/* Displays desactived rectangles */
while(i < 10)
{
Canvas.SetPos(PosX,Y);
Canvas.SetDrawColor(255,255,255,80);
Canvas.DrawRect(8,12);
PosX += 10;
i++;
}
/* Displays a title */
Canvas.SetPos(PosX + 5,Y);
Canvas.SetDrawColor(R,G,B,200);
Canvas.Font = class'Engine'.static.GetSmallFont();
Canvas.DrawText(Title);
}
例えばヘルスメーターと弾薬残量を表示する場合:
class MyHUD extends UTHUD;
function DrawGameHud()
{
if ( !PlayerOwner.IsDead() && !UTPlayerOwner.IsInState('Spectating'))
{
DrawBar("Health",PlayerOwner.Pawn.Health, PlayerOwner.Pawn.HealthMax,20,20,200,80,80);
DrawBar("Ammo",UTWeapon(PawnOwner.Weapon).AmmoCount, UTWeapon(PawnOwner.Weapon).MaxAmmoCount ,20,40,80,80,200);
}
}
defaultproperties
{
}
TextureCoordinatesについて
テクスチャを使ってHUDを表示する場合TextureCoordinatesを使い、U、UL、V、VL値を指定する必要があります。
U、UL、V、VL値は下の画像の様になります。
コメント欄(誰でもコメントを残せます)
最終更新:2011年05月08日 09:03