中カッコのない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#】appsettings.jsonをコンソールで扱う

コンソールアプリでも App.congi に代わる新しい定義ファイルの形式である appsettings.json を使用する場合の設定と実装方法の紹介です。 ASP.NET Core および ASP.NET 5~6 であれば、IServiceCollection.Configure にセクション名を渡せば勝手に内容をオ…

.NET5のWPFにReactivePropertyをセットアップする

以前より圧倒的に簡単にセットアップできるようになっていて逆に混乱してしまったのでまとめておきます。 確認環境 VS2019(16.11.4) .NET 5(C#9.0) WPF プロジェクト作成済み(.NET, .NET F/W, .NET CoreどれでもOK) セットアップ方法 Visual Studio の…

.NET Core/.NET5以降のコンソールアプリでWPFの機能を利用する

.NET でコンソールアプリを作成した場合は WPF 関係のライブラリが使用できません。 static void Main(string[] args) { Bi tmapSource s = null; // CS0103 現在のコンテキストに 'BitmapSource' という名前は存在しません } IDE 上には以下のように提案が…

ディレクトリの中から最新の更新時刻のファイルを取得する

タイトルの通りですが、あるディレクトリ(フォルダ)の中から最新の更新時刻、つまり一番最後に内容を更新したファイルを 1件だけ取得する実装例です。 最近似たような処理を何度も書いた気がするので記事にしてみました。 確認環境 この記事は以下の環境で…

2つのファイルの内容が同じかチェックする

C#で内容を含めて2つのファイルの内容が同じかどうかをチェックする方法です。 処理の流れは、2つのファイルをファイルサイズで比較した後、内容を1バイトずつ比較しています。 FileStreamで1バイトづつ比較しているのでメモリ使用量が少なく比較的高速に動…

【UniRx】ReactivePropertyのスニペット

UniRx の利用例に ReactiveProperty を public で公開する実装が例示されていたりするのですがそれはちょっと違うんじゃないかなと思ったので記事にしました。 簡単な実装例 public readonly ReactiveProperty<int> Value = new ReactiveProperty<int>(); // IntReacti</int></int>…

【Unity】画像をスクリプトから動的にスライスする

2022-01-28 画像を縦横に等間隔でN個に分割(スライス)した場合、左上から右下になるように番号を振って、X=3,Y=6のような位置を指定するのが分かりやすいかと思います。 するとテクスチャーは、原点が左下なので位置計算が必要になります。毎回そのような操…

【Unity】Sprite.Createが遅い・重い場合の対処法

2022-01-28 3500x3500 のテクスチャーを 100x100 に切り出して1125個の Sprite を作成したら Ryzen 5900 なのに 30秒程度かかったため Sprite.Create の生成速度がヤバいなと思ったので調べました。 プロファイラーで見たところ1枚生成するのに 19ms もかか…

【Unity】吸い付くスクロールを実装してみた

メニューをスクロールしたとき中途半端な位置てスクロールを停止すると、近くの要素に位置が吸い付くように移動する動作をマグネットメニューとかマグネットスクロールと呼んだりするらしい?のですが、今回はその実装方法を紹介です。 サンプル動作 実際に…

【Unity】上下左右を表すThickness型を作成する

C#のGUI表現技術ののXAMLには上下左右を表す Thickness 型というものがありますが Unity にはありません(ないですよね? なので今回はこの Thickness 型を作成して特定の操作を簡単にしたいと思います。GUIの上下端を表したり 確認環境 今回実装・確認を行…

【Unity】HSV用のColor型を作成する

Unity の色指定ができる Color はインスペクター上からだと RBG(byteで0-255, float0~1.0fの2種類)、HSVの値の指定ができますがスクリプト上で color プロパティから Color オブジェクトを取得した場合中に入っている値は RBG となっています。 この Color …

【C++】const参照とshared_ptrをダウンキャストする

const 参照と shared_ptr のダウンキャスト方法です。 先に方法を書いておきますが以下の通りです。 // const参照のダウンキャスト auto&/*const Type&*/ sub = static_cast<const Type&>(obj); // shared_ptrのダウンキャスト std::shared_ptr<Type> sub = std::dynamic_pointe</type></const>…

VisualStudioCodeの初回セットアップメモ

VSCode で個別のプログラミング言語のセットアップをする前に必ずする手順のメモです。 タイトルバー表示をクラシックに切り替える 全ての斜体を無効化する UIメニューフォントを游ゴシックからMeiryo UIに変える Plugin の追加・ほか キャレットのジャンプ…

【C++/CLI】プロパティをヘッダーと実装に分ける

タイトルの通り C++/CLI でヘッダーにはプロパティ(propertyキーワード)の宣言だけを記述し、別のファイルに実装を宣言する方法です。VisualStudio では porperty 宣言は実装を自動生成してくれないため自分で手打ちする必要があります。 ヘッダー側 // Sa…

【Unity】Mathf.LerpとInverseLerpの覚書

使うときは頻繁に使うし使わないと全然使わないのでなかなか覚えられない Mathf.Leap と InverseLLeap の挙動のメモです。 Mathf.Lerp リファレンスの説明は以下の通り。 // [a, b] の範囲内で補間する値 value を生成する線形パラメーター t を計算します f…

【Unity】リングコマンドを実装してみた

タイトルの通り Unity で リングコマンドを実装する実装例の紹介です。UI要素をリング状に配置したように見せて左右で最前面の要素を変更できます。 リングコマンドですが実際の動作は以下のような動きになります。 youtu.be 確認環境 Unity 2020.3.12f1 Win…

【Unity】OdinのHorizontalGroupの使い方

UnityでEditorを拡張するためのアセット「Odin」の機能でインスペクター上に変数を水平に表示できる HorizontalGroup の使い方です。 基本的に公式のマニュアルを見ればOKですが日本語のこのサイトは2017年のものでこれを参考にするとうまく動かなかったので…

【C#】インターネット ショートカットを普通のショートカットに変換する

Windows 上にあるインターネットショートカットを普通のショートカットに変換するプログラムです。 既定のブラウザに関わらず指定したブラウザ(Chorome)で強制的に開くように変換します。 using IWshRuntimeLibrary; using System; using System.Collections…

【C#】リストのジェネリックを親クラスに変換する

List<T> の T を親クラスやインターフェースに変換したいこと無いですか?継承関係があって安全に変換できるならジェネリックの型は親クラスに互換してても良さそうですが List の T では認められていません。この操作はできないので代替案の話になります。 た</t>…

【C++/CLI】std::functionにマネージドメソッドをバインドする

std::function にメソッドを関連付ける時は std::bind を使用しますが C++/CLI でマネージドメソッドを std::bind 渡したい場合の実装方法の紹介です。 C++11 以降で関数ポインタの代わりに std::function でコールバック呼び出しされるような局面でマネージ…

【C++/CLI】Action<T1, T2>, Func<..>がエラーになる

C++/CLI で Action は使用できるのに Action<T1, T2> 以降が「E2154 ジェネリック クラス "System::Action" の引数が多すぎます」でエラーになる場合の対処方法です。 ソリューションエクスプローラー > 該当のプロジェクト > 参照 > System.Core を追加 どうやら定</t1,>…

TextMeshProでドット風フォントをいい感じに表示する

TexeMeshProでドット風のフォント(8bitのビットマップ風フォント)をきれいに表示する方法まとめてみました。 いわゆるドット風のフォントは有名なのが以下の3種類あります。これらは(個人的には)長らくゲーム中で使った時に、なかなか綺麗にに表示されない…

TestMeshProで日本語フォントを作成する(2020.3.11f1)

TextMeshPro でフォントを作成する方法のうち、久しぶりに作業すると手順を忘れがちのフォント作成手順と設定値の意味のメモです。 確認環境 今回の確認環境は以下の通りです。 Unity 2020.3.11f1 Windows 10 TMP Importer で Import TMP Essentials 済み フ…

【3.0.3対応】Stellarisで使用しているMODとおすすめMODの紹介

はじめに 前回の2.3.3と前々回1.6.2でおすすめMODを紹介してから2年経過しました。今回は「3.0.3」までアップデートされています。2.0の頃から基本的なゲームシステムは踏襲しつつもプレイ感は依然と別物になっています。MODも2年で更新が途絶えたり、新しい…

【C#】少し変わった拡張メソッドを作成する

C#では既存のクラスにメソッドを追加できる「拡張メソッド」という機能があります。 今回はこの拡張メソッドの少々変わった使い方の紹介です。 確認環境 今回の確認環境は以下の通りです。 .NET Core5(C# 9.0) VisualStudio 2019 Windows 10 拡張メソッド…