Lumino の基本
この章では、Lumino を使ってアプリケーションを作成するための最も基本的な流れについて学びます。
はじめる前に
このチュートリアル内で使用する画像などの素材ファイルをダウンロードしてください。
ただし、VisualStudio(C++) や lumino-rbコマンド(Ruby) を使ってプロジェクトを作成した場合は既に assets フォルダ内に含まれているため不要です。
基本的なプログラムの構造
「最初のプログラム」で見たように、Lumino でアプリを開発するには Application クラスの実装から始めます。
空のウィンドウを表示するだけの最小限のプログラムは、次のようになります。
実行して、ウィンドウを表示してみましょう。
この時点でできることは、クローズボタンなどでウィンドウを閉じるだけです。
文字を表示したりユーザー入力を受けて動きを表現するためには、この App クラスにいくつかのメソッドを実装する必要があります。
初期化と更新
小さな Lumino アプリケーションを作成するための基本的なタスクは次の2つです。
- プログラムの開始時に変数を初期化する
- プログラムが動き出したら、繰り返し変数を変更する
これらの処理を行うために、次のように 2 つのメソッド定義を追加します。
#include <Lumino.hpp>
class App : public Application
{
void onInit() override
{
}
void onUpdate() override
{
}
};
LUMINO_APP(App);
onInit
はアプリケーションの開始時に 1 回だけ呼び出されます。ここには変数などの初期化処理を書きます。onUpdate
はアプリケーションの実行中、繰り返し呼び出されます。ここには変数などの更新処理を書きます。
処理内容は書かれていないため、実行するとウィンドウは表示できますが、動きに変わりはありません。
Note
更新処理は 1秒間に 60 回、繰り返し実行されます。
この 1 回分の実行単位を フレーム
と呼び、「1 秒間は 60 フレーム」といったように使います。
Hello, Lumino!
ウィンドウに文字列を表示してみましょう。
テキストや数値を画面に表示するには、Lumino の デバッグ用の機能である、Debug クラスの機能を使うのが簡単です。
#include <Lumino.hpp>
class App : public Application
{
void onInit() override
{
Debug::print(u"Hello, Lumino!");
}
void onUpdate() override
{
}
};
LUMINO_APP(App);
文字列がウィンドウ上に表示されます。(その後、しばらくすると消えます)
文字列を表示し続ける
次は更新処理の動作を確認してみます。
Lumino にはアプリケーションの起動からの経過時間を取得する機能がありますので、これを使って時間を表示し続けてみます。
アプリケーションの起動からの経過時間を取得するには、Engine::time()
を使います。
#include <Lumino.hpp>
class App : public Application
{
void onInit() override
{
}
void onUpdate() override
{
Debug::print(String::format(u"Time: {0}", Engine::time()));
}
};
LUMINO_APP(App);
実行してみると、画面からあふれるほどのテキストが表示されてしまいました。
繰り返し実行されているのはわかりましたが、今は過去の情報は不要です。
Debug::print()
は第一引数に数値を指定することで、テキストの表示時間をコントロールできます。次のように 0 を指定することで、テキストは 1 フレームの間だけ表示されるようになります。
#include <Lumino.hpp>
class App : public Application
{
void onInit() override
{
}
void onUpdate() override
{
Debug::print(0, String::format(u"Time: {0}", Engine::time()));
}
};
LUMINO_APP(App);
修正したら、実行してみましょう。
シンプルなタイマーができました!
テキストは 1 秒間に 60 回、表示と消去を繰り返すことで、リアルタイムに変化しているように見えます。