C#

【Editor拡張】条件によってインスペクターから編集不可能にする属性を作った

Unreal EngineにはEditConditionというメタデータ指定子があります。 Unityで例えると属性で渡された条件がtrueのときインスペクター編集が不可能になる動作。 誰かがパラメータ用のScriptableObjectを触るときに 不正な値を入れないように対策させるときに…

【Unity】RigidBodyを使ったゲームらしい移動方法について探る

RigidBodyを使ったプレイヤーの動き、手早く作ると多分これが一番早いと思います。 Rigidbody2D rb = GetComponent<Rigidbody2D>(); if (rb) { float hori = Input.GetAxis("Horizontal"); float speed = 5.0f; rb.velocity = new Vector2(hori * speed, m_rb.velocity.y)</rigidbody2d>…

【Editor拡張】再帰的にマテリアルを割り当てるツールを作った

余談 本題 ソースコード 余談2 参考にしたサイト 余談 来週にはunity1weekが開催されますね! 【RT希望】2023年09月18日(月)〜 #unity1week を開催します。 1週間でゲームを作り、みんなで遊ぶ、初心者大歓迎なイベントです。ルールや過去作品はリンク先を…

【日記】オレオレステートマシン最強伝説

再来週にはunity1weekが開催されますね!!! 【RT希望】2023年09月18日(月)〜 #unity1week を開催します。 1週間でゲームを作り、みんなで遊ぶ、初心者大歓迎なイベントです。ルールや過去作品はリンク先をご覧ください。 ゆるいイベントですので、どうぞ…

【Unity】インスペクターから関数を実行する

忙しいので一口メモ📝 ContextMenu属性を使用すると インスペクター上から任意のタイミングで関数が実行が可能。 docs.unity3d.com ソースコード /// <summary> /// ContextMenuサンプル /// </summary> [ContextMenu("FunctionExecution")] private void ExampleFunction() { Deb…

【Unity】段階的にObjectPoolに置き換えていく

Unityのよくある話として、Instantiate()とDestroy()が重いという話は聞いた事があると思います。 シューティングゲームを作ると仮定して考えてみましょう。 まずは作る Bulletクラス Gunクラス 実行結果 アクティブ状態を切り替えるようにする Bulletクラス…

【C#】Listの内容をランダムにシャッフルする拡張メゾットを作る

リストの中身を手軽にシャッフルする拡張メゾットを作ります。 カードゲームなど、中身をランダムにさせたいときに使うかも。 ソースコード ソースコードはこちら。 使い方 通常通りリストを作成し、Shuffle()を呼び出すだけで完了します。 ▶使用例(クリッ…

【C#】自分だけのC#コーディングルールを作った

C#

タイトルの通り、自分用のC#コーディングルールを作成しました。 github.com 背景 環境・参考元 良かった点 ソースコードに一貫性ができる 共有ができる 日本語である 悪かった点 ソースコードが書けない 表現の言語化が難しい 終わりに 参考サイト 編集 コ…

【Unity】できるだけ楽してテンプレートスクリプトが作成できる機能を用意する

Unityで新たにソースコードを作成する際、プロジェクトタブでC#スクリプト作成して、名前つけて、 クラスの役割に権利表記やXML タグを使ってコメント付けて、UTF-8で保存して、場合によっては継承元を変えて…。 赤文字の作業が非常に面倒なので、あらかじめ…

【Unity】デバッグ情報を管理するクラスを作る

先週、突然パネルでポン風パズルゲームを作りたいと思い立ち、ちまちまと作っています。 下からブロックが上昇し、3つそろうと消えるゲームです。 youtu.be パネポン式パズルゲーム今週もちまちま作った上昇する仕組みを作った!一番の行は連鎖しないように…

【Unity】bit演算でフラグを持つ

特にRPGなどにおいて、状態異常を管理する際、 各状態異常に対してbool型を持つ方法が考えられると思います。 using UnityEngine; public class Sample : MonoBehaviour { private bool m_isPoison = false; private bool m_isParalysis = false; private bo…

【Unity】BuildSettingsにセットしたシーンをenumとして自動生成して扱えるようにする

シーンマネージャを使ってシーンを呼び出すとき、 引数にSceneの文字列またはIndex番号を渡します。 docs.unity3d.com こんな感じのソースコードを書いていた時期がありました。 using UnityEngine; using UnityEngine.SceneManagement; public class SceneC…

【Unity】Fusionを使って接続→操作まで作るメモ

Fusionを使って接続→操作までの処理を作ります。 プレイヤーが抜けたときなどの処理は記述せず、 なるべく接続→操作できるまでのデバッグに必要最低限なもののみに絞ります。 Fusionのインストール・登録 接続処理を作る スクリプトの大枠を作る #region INe…

【Unity】Fusionことはじめ雑記

GW中旬、電車で移動中にTwitterを閲覧。 そんな時に、気になるツイートを発見! シンプルなオンラインゲーム開発基盤です github にて無料公開しました!プレイヤーが移動し、テキストを送信すると、プレイヤーの頭上に表示されます。いろいろなリアルタイム…

【Unity】SpringJointコンポーネントを使ってワイヤーアクションみたいなものを作った

ワイヤーアクション、いいですよね…。 海腹川背みたいな挙動のものが作りたいな~~~とふと思いました。 youtu.be なので作りました。 SpringJointでワイヤーアクションっぽい挙動できた!これ、ランゲームに使えそうなのでしばらくこれを使って詰めて見よ…

【Unity】InputManager・InputSystemで一部のキーボード入力が反応しないまたは違う

入力周りを見ているとき、Unity入力システムには入力用の変数名と 実際の入力に相違があるものがあることに気づきました。 例えば以下のコード。 新しい方の入力、InputSystemを使って、 キーボードの「 ] 」の入力をさせるコードです。 using UnityEngine; …

【Unity】Youtubeとかニコニコとかによくある曲なってるときに四角いボリュームみたいなのが上げ下げしているアレを作った

タイトルが不穏かも。 なんなんだ…って思う人もいるかもしれませんが、 ひとまず以下の動画の50秒~を見ればわかります。 www.nicovideo.jp 良さげな曲とかMV聞いているときによくあるアレだよ!アレ!!! アレの名前 AudioSource.GetSpectrumData 実際に使…

【Unity】ビルド設定にシーンを追加したときに走る処理のメモ

私事で取得したいときがありました。 そんな便利なメゾットとかないかな~…と探していたのでメモ。 EditorBuildSettings EditorBuildSettingsを使う。 docs.unity3d.com using UnityEngine; using UnityEditor; public class SceneLogTest : MonoBehaviour {…

【Unity・C#】コルーチンについてまとめる

今回はコルーチンについてまとめます。 使えるようになると非常に便利! この記事はユニティちゃんライセンス条項の元に提供されています。 対応表 コルーチンとは? 使いどころ コルーチンの開始・停止 MonoBehaviour .StartCoroutine MonoBehaviour.StopCo…

【Unity・C#】どのような手順でラムダ式になったのか知る

前回、デリゲードについての記事を書きました。 nasan-log.hatenablog.com 今回はこのデリゲートをさらに使いやすくする機能、 ラムダ式についてです。 最小のラムダ式 関数からデリゲードへ デリゲードから丁寧なラムダ式へ 丁寧なラムダ式からラムダ式へ …

【Unity・C#】ActionとFuncについてまとめる

私事ですが、Action・Funcを使用する頻度が増えてきました。 しっかりと認識したことがなかったためメモを残しておきます。 対応表 基本的な使い方 Action Delegate Action Action<T> 引数の数について Func Delegate Func<TResult> Func<T,TResult> 引数の数について 参考にしたも</t,tresult></tresult></t>…

【Unity】AnimatorのTriggerについて理解する

UnityのアニメーションパラメータにはBoolとTriggerがあります。 どちらもフラグ管理用のパラメータです。 恥ずかしながら、今までアニメーションをしっかり触ったことがなく つい最近までこの2つのパラメータの違いがよく分かりませんでした。 なので、完…

【Unity】値が範囲内にあるかどうかの汎用関数を作る

UnrealEngineには値が範囲内にあるかどうかを判別するInRange関数があります。 イメージはこんな感じ。 docs.unrealengine.com docs.unrealengine.com これが便利なのでUnityでも使えるように作ってしまおう!という記事です。 ソースコード 使用例 ゆる解説…