作りたいもの
ゲームによくある、画面左上などに経過時間表示させるやつ
今回はボタンを押すと経過時間を表示し、もう一度押すとリセットするものを作る
準備
- NGUIのインポート(2.7.0 フリー版)
- 適当なフォント(ttfファイル)
手順
スクリプト
ElapsedTime.cs
public class ElapsedTime: MonoBehaviour {
UILabel label;
System.DateTime startTime;
System.DateTime elapsed;
bool onClick = false;
void Start ()
{
this.label = GetComponent<UILabel>();
this.elapsed = System.DateTime.Now;
Initialize();
}
void Update ()
{
if (this.onClick)
{
System.DateTime now = System.DateTime.Now;
if (now != this.elapsed)
{
System.TimeSpan deltaTime = now - this.startTime;
this.label.text = deltaTime.Hours.ToString("D2") + " : " + deltaTime.Minutes.ToString("D2") + " : " + deltaTime.Seconds.ToString("D2");
this.elapsed = System.DateTime.Now;
}
}
}
// NGUIのButtonをクリックすると呼ばれるメソッド
void ButtonOnClick()
{
if(this.onClick)
{
this.onClick = false;
Initialize();
}
else
{
this.startTime = System.DateTime.Now;
this.onClick = true;
}
}
void Initialize()
{
const string DEFAULT = "00 : 00 : 00";
this.label.text = DEFAULT;
}
}
NUGI部分
- NGUIメニューの Open the UI Wizard からUIを作成
- NGUIメニューの Open the Font Maker でUIFontを作成(TypeをDynamicにしてttfファイルを選択)
- NGUIメニューの Open the Wedget WizardからLabelとButtonをUIのPanel下に作成(Atlasはサンプルのものを使用)
- Labelの名前をTimeLabelに変更 上記のElapsedTime.csと作ったUIFontをアタッチする
- ButtonにAddComponent > NGUI > Interaction > Button Messageをアタッチする
- InspenterからButton MessageのTargetにTimeLabelをアタッチし、FunctionNameをButtonOnClickと入力、TriggerをOnClickにする
- TimeLavel、Buttonの位置や大きさを適当に調節