【Unity】Debug.Logでリッチテキストのタグを使って色分けする
Debug.Logでメッセージを出力する際、大量のメッセージがあると必要な部分の判別が難しくなります。そんな時にはリッチテキストのタグを使って色分けすると必要な情報が見分けやすくなり、ゲームのデバッグサイクルが高速化するのでおすすめです。
あなたのゲームをいち早く完成させるための研究所
Debug.Logでメッセージを出力する際、大量のメッセージがあると必要な部分の判別が難しくなります。そんな時にはリッチテキストのタグを使って色分けすると必要な情報が見分けやすくなり、ゲームのデバッグサイクルが高速化するのでおすすめです。
タイトル通りではありますが、テクノピクセルさんと一緒に作っている「Minable&Create/ミナクリ」がTGS(東京ゲームショウ)2021に出展します。インディーデベロッパーの作品が並ぶ選考出展となっているので、この機会にぜひ遊んでみてください!
テクノピクセル様と開発している2Dサンドボックス系ゲーム「Minable&Create/ミナクリ」のデモ版がリリースされました! デモ版は無料で遊べるので、まずはゲームの雰囲気がどんな感じかお気軽に試してみてください。このページではSteamのアカウントの作成方法から解説しているので、遊べるようになるまでサポートします。
遊んでいるゲームの中で今何が起きているのかをプレイヤーに伝えるのは大切です。特にプレイヤーが操作した結果どうなったかをちゃんと伝えることで、ゲームへの没入度も変わってくるため、フィードバックの導入を検討するとグッド。
ソフトウェアの開発方法としてプロトタイピングという方法があります。試作品を素早く作り上げてユーザーのフィードバックを早い段階で得ることにより、ユーザーの感覚に基づいてゲームの完成度を上げていくサイクルを早く回すことができます。
最近作っていた2Dのサンドボックス系アクションRPG「Minable&Create/ミナクリ」をSteamで早期アクセス版としてリリースしました! マイクラが好きな人やRPGツクールで地形を作るのが好きな人におすすめのゲームなのでぜひ遊んでみてください!
オブジェクト指向プログラミングの本を読んでいると、最初の頃の章でカプセル化とか隠蔽が出てきます。のっけから初心者の心理的なハードルを上げる言葉が並べられて当時は辛かったのですが、あの頃の気持ちを思い出しつつ自分の言葉でまとめようと頑張った記事がこちらになります。ご査収のほどよろしくお願いします。
C#でアクセシビリティレベルを表現するために使うアクセス修飾子を紹介しています。このうちpublicについてはUnityで特別な位置付けにあるので、C#での扱いとUnityでの扱いの両方を加味して選択するとグッド。
Unityで使っているC#はオブジェクト指向のプログラミング言語で、継承やオーバーライドの機能を上手く使えると効率よくコーディングできます。この記事では本当に導入レベルの話をしていて、キーワードの紹介に近いので他のページも一緒に参照するといいかもしれません。
TransformクラスのSetAsFirstSiblingなどを使うことでHierarchyウィンドウで親オブジェクト内の順番を変更することができます。UIの場合はHierarchyウィンドウでの順番が描画順に影響してくるのでたまに意識してみると良いかも。
thisキーワードを使ってそのインスタンス自身を表す、というのは最初はよく分かっていなかったのですが、使ってみると便利でした。特にフィールドに値をセットしたい時にはthisを使ってフィールドであることを分かりやすくするのも大切ですね。
Hierarchyウィンドウではゲームオブジェクト間で親子関係を設定することができます。適切に親子関係を設定しておくことで、Hierarchyウィンドウから情報を確認しやすくなり、開発やテストのスピードが向上します。スクリプトから親子関係を設定する場合はTransformのSetParentメソッドを使うのが便利なので、これをマスターしましょう。
パーリンノイズを使ってなだらかに高さが変化する地形オブジェクトを生成する機能をエディタから使えるようにしました。インスペクターウィンドウに表示されたボタンをクリックすることでシーン内に地形オブジェクトを生成してくれます。ライトのベイクをしたい時には事前にオブジェクトを生成しておく必要があったのでこの形でも実装してみました。
このブログで扱っているパーリンノイズに関する記事をまとめています。一部を見てもらうだけでもいいですし、どんな点で気をつけないといけないのかといった課題についても潤を追って対応しているので流れをおってもらってもいいかもしれません。
このページでは主にゲーム全体で使いたい設定値、定義値をstaticなクラスに記載する際、constとstatic readonlyのどちらを使った方がいいかなーという点を出発点に、コンパイル時定数と実行時定数の違いを掘り下げています。
UnityではMonoBehaviourを継承したクラスを作ることが多いですが、これ以外にもいわゆるC#で作成するような通常のクラスを作成して使っていくことで柔軟にコーディングできます。また、staticなクラスも適切に使っていくことで、ゲーム内のデータを保持したり設定値や定義値を保持することもできます。
パーリンノイズを使って自然に変化する値を計算し、TerrainのHeightMap(ハイトマップ)として設定します。Terrainは画面から操作するものと思っていましたが、スクリプトからも値を設定できるので便利です。
パーリンノイズを使ってなだらかに変化する地形を作成しましたが、パーリンノイズを加算または乗算によって複数回重ね合わせることで、より変化に富んだメリハリのある地形を作成することができます。加算、乗算の両方についてこの記事で実験しています。
ドローコールを減らすためには、ドローコールの処理をまとめるようにしましょう。まとめるためにはUnityのバッチング処理である動的バッチ処理、静的バッチ処理を活用します。ドローコールが減ればCPUの処理負荷が減り、CPUの処理負荷が減ればフレームレートが維持され、快適なゲーム環境を提供することができます。
なにか新しい技術や機能を試す時には、いきなりメインのプロジェクトで試すのではなく、検証用のプロジェクトを作って試すようにしましょう。万が一プロジェクトを壊してしまった時の焦燥感、やっちまった感は結構心にくるので、影響を抑えつつ検証するのがグッド。