【C#】MonoGameでクロスプラットフォームなゲーム開発をする(3)

こんにちは!洋梨🍐です。今回は前回の続きで「ゲーム開発がしやすい環境づくり」をまずはしていきたいと思います。

Unity風に開発できるようにする

MonoGameでは文字を表示させるだけでもSpriteFontのビルドから入ったりとUnityとは違って色々なところでちょっと手間がかかります。

そこでUnity風にスムーズに開発ができるように簡単なライブラリを作りました(作ってます)

実行の様子

では今回はそのUnity風開発ライブラリ(以下「YPMono」)についての詳細を紹介したいと思います。

シーンを再現

まず作成の基盤、シーンについてです。

Unityではこのシーンにスクリプト及びオブジェクトを追加していくことで作成していきます。

MonoGameではGameクラスが起動後読み込まれるのでGameクラスを継承したYPSceneクラスを作成しました。

シーンを実際作成するときはYPSceneを継承して作成します。

YPScene 主な機能

関数
・Instantiate(SceneObject) オブジェクトをシーンに追加します。

override
・Start() 起動時呼び出されます。
・Update(Gametime) 毎フレーム事呼び出されます。

GameObjectを再現

YPMonoではUnityのGameObjectをSceneObjectとして再現しています。

SceneObject 主な機能

メンバ変数
・Transform transform オブジェクトの位置及びサイズなどを扱います。
・SceneObject root オブジェクトの親子関係を結びます。親をセットできます。
・List Children 子をセットできます。

※Unityではたしか親子関係はTransformですがYPMonoではSceneObjectで管理しています。

Override
・OnCreate(YPScene) 生成時呼び出されます。
・OnDestroy(YPScene) 破棄時呼び出されます。
・Start() 最初のUpdateで呼び出されます。
・Update() フレーム毎(60fps=60回)呼び出されます。
・OnTapEvent((YPScene, TouchLocation, bool isOnObject) タップイベントを受け取ります。

Transformを再現

YPMonoではUnityのTransformを一部再現しています。

Transform 主な機能

メンバ変数
・Vector2 position , localposition 位置関係の情報を扱います。localは親からの相対座標を取得/設定できます。
・Vector2 size オブジェクトのサイズを管理します。
・float rotation , scale オブジェクトの回転、倍率を扱います。(今後対応予定)

関数
・bool GetOnPosition(Vector2) Vector2がこのTransform上にあるか計算します

その他

Text , Button

を現段階(19/10/04)で追加しています。

詳しくはソースコード (GitHub : https://github.com/younaship/YPMono )をご覧ください。

あわせて読みたい