【C#】コレクション(リスト・配列)を安全に外部公開する

この記事は、あるクラスの中で管理しているコレクション(リスト・配列)をクラス外に渡す時に安全な渡し方の考え方や実装の紹介です。 あるクラス内で管理しているリストをクラス外に公開する場合に具体的にどういった危険性があるのか、どうすれば安全なの…

【C#】Queue<T>とConcurrentQueue<T>の使い方

タイトルの通りQueueの使い方の紹介をしたいと思います。 2つのQueue まず「Queue」ですが一言で言うと、入れたデータが入れた順番に取り出せる入れ物の事を指します。以下のような1本のパイプのイメージです。 こういったデータ構造を先入れ先出し(First I…

All In 1 Sprite ShaderのURPがUnity2021.2.0以降でエラーになる場合

本当は本家に直してもらうのが一番いいけど修正されるまでは自力で直さないと正常に動作しないので修正方法の紹介です。 発生するエラーは以下の通りです。 'CombinedShapeLightShared': cannot implicitly convert from 'half4' to 'struct SurfaceData2D' …

C#でビット操作を簡単に行うラッパークラスの紹介

例えばC#でハードウェアに近い I/O を扱う場合、1チャンネルが ushort の1ブロックの読み書きが要求されていて、各ポートはビットごとに割り当てられているなんてケースが割とありますがいちいち出力ポートの設定を読んでビット操作をしてまた書き込むなどの…

The referenced script (Unknown) on this Behaviour is missing!

普通は Console から該当の警告メッセージを選択知ればヒエラルキーで missing の場所にジャンプできますが以下のようスタックトレースがネイティブ出力のエラーが出て飛べない & ヒエラルキー上をいくら探しても警告が出ていない場合、プロジェクト内のプレ…

Universal RP(URP)を2Dプロジェクトに設定する(2021.2版)

なんとUnity Hub の新規作成に「2D URP」がテンプレートに追加されているので2Dでライトを積極的に使っていきたい、みたいな人はこれを選べばそのまま URP の 2DRenderer が設定済みのプロジェクトが選べるようになっています。 この場合説明不要ですが、後…

中カッコのないif文の命令文を自動改行しない

VisualStudio 2017 および 2019 でオートフォーマットに関する以下の 2つの状況が発生した場合の設定方法です。 中カッコのないif文を改行しない using ステートメントの中カッコを改行しない なぜか1行で記述したい中カッコを省略したif文の命令文が新しい…

URPでPostProcessingの効果をゲーム画面だけに適用する

Unity の URP 環境で Post Processing の効果をゲーム画面だけに適用して UI には効果を適用しない設定の紹介です。 通常、Main Camera に ゲーム画面と UI を映した状態で Vignette(画面の端が暗くなる効果)を適用すると UI の端が暗くなって見づらくなっ…

Unity向けタイマーライブラリ「UniTimer」をリリースしました

Unity向けのタイマーライブラリ「UniTimer」をリリースしました。 Git のリポジトリは以下の通りです。 github.com Github の README と内容は同じですが、このライブラリの説明などは以下となります。 動作環境 Unity 2020.3 以降 このライブラリを使用する…

All In 1 Sprite ShaderのURPセットアップ手順

Unity のアセットストアにある「All In 1 Sprite Shader」の URP 用の設定方法です。 忘れるたびにマニュアルのリンクから解説動画見てねが割とツラいのでまとめました。 確認環境 この記事は以下の環境で作成及び動作確認を行っています。 ViauslStudio 201…

等間隔に並んだ画像データをグリッド毎にトリミングする

例えばスプライトアニメーションで等間隔に並んでいるデータの余白が大きすぎる場合、各画像の余白をトリムしたい場合がありますが、1枚の画像になっている場合トリミングするのはなかなか大変です。今回はそういった画像を 実行例 分かりやすいように極端に…

【C#】appsetting.jsonをコンソールで扱う

コンソールアプリでも appsettings.json が使いたい場合の設定と実装方法及びヘルパークラスの紹介です。 確認環境 この記事は以下環境で確認しています。 VS2019(16.11.4) .NET 5(C#9.0) コンソールプロジェクトが作成済み パッケージの導入 「NuGet パ…