ルルのゲーム開発備忘録

主にUnityやC#に関する情報を気まぐれに投稿していきま~す

C#

【C#】ゼロプレースホルダーを使った数字の表記方法

はじめに 使い方 参考 はじめに あけましておめでとうございます。 久しぶりの投稿になります。 また少しずつブログの記事、投稿していけたらと思います。今回は、ToStringのゼロプレースホルダーについての紹介です。 タイマーなど、数字を指定した桁数で表…

【C#】using static ディレクティブ

はじめに using static ディレクティブ 使い方 参考 はじめに 今回は、using staticディレクティブについて紹介します。 using static ディレクティブ using staticディレクティブを使うと、型名を書かずに対象の型の静的メンバーを記述することができるよう…

【C#】outパラメータ修飾子について

はじめに outパラメータ修飾子 使い方 参考 はじめに 今回は、outパラメータ修飾子について紹介します。 outパラメータ修飾子 outパラメータ修飾子を使ったメソッドの特徴 ・戻り値はbool。処理成功でtrue、失敗でfalse ・処理成功で、outが付いたパラメータ…

【C#】private protectedについて

はじめに アセンブリに関連するアクセス修飾子 注意点 参考 はじめに 今回は、private protectedを含めた、C#でアセンブリに関連する代表的なアクセス修飾子について3つほど紹介します。 アクセス修飾子ってのはpublicとかprivateとかのやつです。 アセンブ…

【C#】パラメーターの in 修飾子について

はじめに in修飾子 使い方 参考 はじめに 今回は、in修飾子について紹介します。 in修飾子 C#7.2からin修飾子が利用可能になりました。 in修飾子はメソッドに引数を渡すときに、参照として渡したいけどメソッド内では参照先の値の書き換えをさせないようにす…

【C#】ref修飾 (refパラメータ・ref戻り値・refローカル変数)について

はじめに ref 使い方 さいごに 参考 はじめに 今回は、C#のref修飾詞について紹介します。 ref 通常、C#ではメソッドに値型を引数として渡したり戻り値を受け取ったりすると、オブジェクトがコピーされて受け渡しされますがrefを使うことで参照を受渡しする…

【C#】パターンマッチング「switch case 型名 変数名 when 条件」

はじめに switch文のパターンマッチング はじめに 今回は「switch文のパターンマッチング + when句」について紹介です。 パターンマッチングについては前回の記事を参考にどうぞ。 rurugamedev-blog.com switch文のパターンマッチング C#7.0以降ではswitch文…

【C#】型パターンマッチ「is 型名 変数名」

はじめに 通常の書き方(パターンマッチを使わない) 型パターンマッチを使った書き方 さいごに 参考 はじめに 今回は、C#7.0から追加された型パターンマッチについて紹介します。 これを使うと、型の判定とキャストを別々にする必要がなくなり、制御フローを…

【C#】式形式のメンバーの書き方

はじめに 式形式のプロパティとメソッド 式形式のメンバーが使えるもの はじめに 今回は、C#6.0あたりから導入された式形式のメンバーについて紹介しようと思います。 これを使うとコードをより短く簡潔に書くことができます。 式形式のプロパティとメソッド…

【C#】Enum.IsDefinedメソッドについて

はじめに Enum.IsDefined サンプルコード さいごに はじめに 今回は、Enum.IsDefinedについて紹介します。 Enum.IsDefined Enum.IsDefinedは、ある整数または文字列が指定したEnumに定義されているかどうかを判定してくれます。 サンプルコード using System…

【Unity】UnityにRiderを導入する手順(Mac)(2023.7.1)

はじめに 導入手順 ダウンロード インストール ライセンスを登録する Unityとの連携方法 最後に はじめに MacでUnityの開発をするときにいい感じのエディタに出会えなかったので、今まで一回も使ったことがなかったRiderを導入してUnityで使ってみたのでその…

【C#】ValueTuple(タプル)の使い方

ValueTuple(タプル) タプルが一番威力を発揮するケース タプルの比較 タプルの分解 参考 ValueTuple(タプル) C#7.0からValueTuple(タプル)が追加されました。 タプルは、複数の要素をグループ化したデータです。タプルの生成方法と各要素のアクセス方法の例…

【Unity】Unityのnullだけどnullじゃない問題

はじめに nullだけどnullじゃないんです 原因の正体 対応策 参考 はじめに 前回の記事*1で?.演算子と??=演算子の紹介をしました。これらを使うときにUnityのnull判定について少し注意が必要になるので、今回はそれについて紹介します。UnityのComponetnクラ…

【C#】Unityで使えるnullの判定を楽にする演算子

はじめに ?.演算子 ??=演算子 最後に はじめに C#6.0から利用可能になっている?.演算子と、C#8.0から利用可能になっている??=演算子についての紹介です。 (Unityのクラスに対して使うのは少しだけ注意が必要です、それについては次の記事で説明予定) ?.演算…

【C#】演算子(operator)のオーバーロード

はじめに 演算子のオーバーロードとは 書き方 サンプル オーバーロードできる演算子例 最後に はじめに C#の演算子(operator)のオーバーロードについての紹介です。 演算子のオーバーロードとは 自分で定義した型に対して演算を定義することができます。例え…

【Unity】UnityのエディタをVSCodeに設定する手順(Macの場合)

はじめに 1 VSCode向け.NetSDKをインストール 2 VSCodeをインストールする 3 VSCode拡張機能をインストール 3-1 検索欄に「C#」と入力し、C#機能拡張をインストール 3-2 検索欄に「Unity」と入力し、UnityCodeSnippetsをインストール 4 Omnisharp: Use Moder…

【Unity】シーンの一覧を表示して開くEditor拡張

はじめに エディタ拡張のプログラム エディタの見た目 まとめ はじめに ゲームを実行するときに、最初のシーンをいちいちProjectウィンドウから検索して開くのが面倒くさかったので、シーン一覧を表示してその中から選ぶとシーンを開いてくれるエディタ拡張…

【Unity】SingletonMonobehaviourとは?目的や使い方について解説

はじめに SingletonMonobehaviourの特徴 SingletonMonobehaviourの実装 まとめ はじめに Unityにおいて、マネージャークラスなど、シーン内で唯一のインスタンスを保持する必要があるクラスを扱う場合があります。例えば、GameManagerやSoundManagerなどがこ…

【Unity】ジェネリックとは?目的や使い方について解説

はじめに ジェネリックの基本 Unityでのジェネリックの利点 型に依存しないコード まとめ はじめに Unityでは、ジェネリックを使って、型に依存しないコードを実現することができます。 ジェネリックの基本 ジェネリックは、C#の機能で、汎用的なプログラム…

【Unity】RequireComponentとは?目的や使い方について解説

はじめに RequireComponentの目的 使い方 まとめ はじめに Unityには、Componentを簡単に追加するための機能がいくつかあります。その中でも、RequireComponentと呼ばれる機能は、Componentを追加する時に付属的に必要なComponentを自動的に追加するための機…

【Unity】ラムダ式で最近知った書き方

はじめに void 関数 => ステートメント まとめ はじめに Unity関連のことを調べてた時にふと見つけたラムダ式?の意外な書き方があったのでそのメモです。 void 関数 => ステートメント 例えば↓のような感じで、void Start() => count++と書くと、Start()が…

【Unity】実行するまでが劇的に速くなるEnterPlayModeオプションについて

はじめに Unity Japanの公式動画での紹介 EnterPlayModeの要点 UnityのPlayModeが実行されるまでの時間がはやくなる オプションの設定方法 なぜ速くなるか ドメイン・リローディング シーン・リローディング EnterPlayModeをオンにした時の副作用 その他 ま…

【Unity】#regionを使ったコードの整理

はじめに #region~#endregionで囲う regionをたたむこともできる まとめ はじめに 今回は#regionの使い方についての紹介です。 #region~#endregionで囲う ↓の画像のように、自分のコードの好きな部分を#region~#endregionで囲うことができます。囲うこと…

【Unity】関数を数秒後に遅らせて実行する処理を簡単に書く方法 [Invoke]

はじめに Invoke サンプルコード 実行結果 まとめ はじめに ゲームを作っていると、数秒遅らせて処理したいという場面にしばしば出くわすと思います。自分はよくコルーチンを使うのですが、この前、Invokeで実装する方法を知ったので紹介します。 Invoke Inv…

【Unity】UnityEditorで再生してないのにコンストラクタ内の処理が実行される

はじめに シリアライズ化されるタイミングでコンストラクタが実行される EditorApplication.isPlayingで防ごうとしたらどうなるか まとめ はじめに この前、Unityでゲーム開発してるときにシーンやプレハブを開いただけでコンストラクタ内のDebug.Logが処理…

【C#】returnはvoidの関数でも使える(過去記事再編集)

戻り値のないreturn サンプル まとめ 戻り値のないreturn return文って聞くと、戻り値の関数内で使うイメージがありますが、戻り値のないvoid関数内でも使うことができます。 使うとreturn文以下は処理されなくなります。「早期return」とよばれるやつですね…

【C#】ChatGPTに「C#でじゃんけんのプログラムかいて」ってお願いしてみた!

C#

ChatGPTにお願いだ! 使ったツール AIチャットくんとのやり取りの様子 生成してくれたC#のじゃんけんコード 生成されたコードの動作確認 まとめ ChatGPTにお願いだ! 最近何かと話題のChatGPT*1*2をつかって、C#でじゃんけんのプログラムを書かせてみました…

【Unity】ビルドにコードの一部を含めない方法

defineディレクティブ defineディレクティブ デバッグツールやログ出力などを実機やリリースビルドに含めたくないときには #if UNITY_EDITOR Debug.LogError("エラー"); #endif のように#defineディレクティブで囲むと簡単にできます。また、自分でカスタム#…

【Unity】SerializeFieldの隣の「ToolTip」について

「ToolTip」とは サンプル インスペクター上の見え方 まとめ 「ToolTip」とは Unityでチーム開発とかをしてると[SerializeField]の部分が [Tooltip("タイトル用のテキスト"), SerializeField]のようになっているのをよく見かけると思います。これはTooltipAt…

【Unity】実行中のコマ送り機能のショートカットキーと隠れ?機能

Unityのコマ送り機能 GUIでの通常のコマ送り ショートカットキーを使ったコマ送り コマ送りしながらさらにボタンをタップする まとめ Unityのコマ送り機能 Unityにコマ送り(1フレームずつ実行させる、描画させる)機能があるのはご存知の方も多いと思います。…