RetroBlitの学習

このページはRetroBlitの公式ドキュメントを読み進める上で個人的に気になったこと、大事だと思ったことを書き留めつつ、自らの理解で解釈することでより効率的に内容を把握することを狙ったものです。

2023/01/20

RetroBlit(以降RB)はUnityにとってのUpdateやStartを(主には)利用せず、またヒエラルキービュー上にはUnityの機能として必要なものが置いてあるのみである。RB.IRetroBlitGameを継承したクラスに機能を書いていく。これを継承した場合QueryHardware、Initialize、Update、Renderの4つの関数の実装が必要で、まあ大体名前の通りである。

RB.から始まるいくつかの機能が利用できる。HardwareSettingsから環境設定にアクセスでき、Clearで画面のクリア、Printで文字の表示ができる。

RB関数の引数はRBとして指定した画面サイズに対応しており、また各種描画処理についてはUnity上のゲームオブジェクトを経由しないために一行で完結するのは非常に興味深い。HSPを触っていたころを思い出す。

このクラスを、Unityからnewして呼び出すことで初めて動き出す。


RBは独自のレンダリングシステムを持つため、Unityの描画機能、つまりアニメーションや各種GUIの機能(あとゲームオブジェクトを置くことも含まれそう)を利用することはできない。ただしRBで出てきた見た目をテクスチャとしてUnityで利用することはできる。

見た目まわりについて、RBのほうで結構便利なシステムがいくつかある。テクスチャのロードのあと、インデックスで紐づけしたスプライトを表示することができる。もちろんだが任意長方形領域の貼り付けにも対応している。HSPより親切だな。さらにバッファを使った描画もできるので、うーん、便利。文字列についてもUnicode対応なので日本語も書けるぞお。そのほか、文字の表示についてタグに対応しており、色付けやアニメーションについてもなぜかサポートされている。領域内での揃えにもデフォ対応だ。これら機能を無視するためのフラグなどもあり、こういったフラグはbitフラグなので|をつかって同時に指定できる。あとタイルマップについてはUnity……のものではなくtmxファイル、Cocos2dで使っているらしいファイルを利用する。これについては外部ツールを使えばよいのかな?

そのほか、描画システムにはポストプロセスやカメラ機能、また描画の際のバッチ数などシステムとして必要な機能は至れり尽くせりだ。


その他こまごまとした、しかしゲームに必要な機能として、非同期ロード、GC回避のための文字列操作をサポートしている。