C#
WPF で XAML 側に DataContext や ViewModel を代入した後、実際に Binding で解決された結果を使いたいケースがある (ほんとうに?)。 そういうときに使うテク。 例えば以下のような XAML があったとき:
System.Text.Json は、デフォルトでは下記クラスメンバーのウチ、フィールドはシリアライズ対象とならない。 class ClassA { public int Field; public int Property { get; set; } } var json = JsonSerializer.Serialize(new ClassA { Field = 1, Property…
C# / VB.NET のコンパイラーである Roslyn はライブラリとして扱うこともでき、コード解析などを行うことができる。 その中でメソッドについての情報が格納されるのが IMethodSymbol だが、以下のような拡張メソッドの場合は、拡張メソッドそのものでは無く…
.NET MAUI Blazor Hybrid アプリというものがあります。 これは、 .NET でクロスプラットフォームなアプリを作成するためのフレームワークで、 Xamarin.Forms の後継です。 同様に、 ASP.NET Core Blazor というものがあり、これは .NET と C# を利用して、 …
例えば GitHub Actions などで定期的にビルドを行っている際、大部分は net8.0 だが特定のプロジェクトだけは net8.0-windows を指定している、などの理由で、ビルドから除外したいケースがあります。 そのとき、 Microsoft Learn では該当プロジェクトを除…
System.CommandLine という Microsoft による .NET のコマンドラインライブラリがあります。 これを使うと (一生プレビュー版ではあるものの) わりと簡単にコマンドラインアプリを作れるのですが、今回はそれについての記事です。 各サブコマンドを定義後、…
Unity で UXML を動的に生成したいことってありますよね?わたしはあります。 例えば、 UXML で記述できる HTML もどきは仕様が古すぎて、 HTML Living Standard っぽく記述した物をトランスパイルするとか......。 ということで、その方法のメモ。 とはいっ…
ASP.NET Core で UseSpa とかで SPA アプリケーションをホストできるんですが、例えば Staging 環境だったり、何らかの理由で特定ディレクトリ以下のアクセスを拒否したいケースがあります。 その場合、 Authorize 属性を通過しないので、自前で認証のチャレ…
いつもは Unity みたいな高レイヤーですが、今回は比較的低レイヤーのお話です。 基本的に、最近の場合は DirectX を直に触るケースは少なくなってて、例えば Unity や Unreal Engine 等のような、ゲームエンジンを触ることがほとんどだと思います。 ただ、…
比較的最近の Unity では、 Timeline 関連の API も公開されていて、ある程度自由にカスタマイズすることが出来ます。 今回はそのうち、 TrackAsset についてのお話です。 TrackAsset を継承したクラスを作ることで、 Timeline に任意のトラックを追加するこ…
Mock サーバーを立てなくても Service Worker で働いてくれる API Mock ライブラリーである Mock Service Worker を、 ASP.NET Core + Vite な環境で使う方法についてのメモ。 といってもやり方は簡単で、わたしがとった方法は単純に mockServiceWorker.js …
TypeScript を使いたーい!しかもできるだけ早くコンパイルして欲しいー!みたいなとき、 Vite は設定も少なく爆速なので便利ですよね。 ということで、今回は Vite + ASP.NET Core を使った、爆速フロントエンド開発の紹介です。 なお、開発サーバーのみ Vi…
VS2022 だと不具合というか仕様で、 Roslyn Analyzer を Experimental Instance で立ち上げても反応してくれません。 地味に困るので、そういうときはこうすればイイヨというメモです。 といってもカンタンで、設定から、 Text Editor > C# > Advanced から、 R…
Prefab Variant 、便利ですよね。 今回はそれをスクリプト経由で作成する方法の紹介です。 といってもそれ専用のメソッドがあるわけでも無く、以下の処理で自動的に作成されます。 var go = (GameObject) PrefabUtility.InstantiatePrefab(_prefabPath); // …
Unity で Ctrl + D によるコピーを検出したい場合のやり方です。 といってもカンタンで、 hierarchyWindowItemOnGUI でヒエラルキーの OnGUI を受け取ってそこで処理してあげるだけ。 あとは、 delayCall で処理を遅延させないと activeGameObject がコピー…
ちゃんとした Unity アプリケーションを作っていると、 Json でアプリケーションデータを永続化したくなることがあると思います。 ただ、 PlayerPrefs はゴミらしいのと、 Unity 標準の JsonUtility だと物足りない......!となると、やはり Json.NET が選択…
今回は、 OpenVR SDK にてコントローラーや各トラッカーなどのデバイスのアイコンの場所を取得してみようと思います。 といっても、やり方はカンタンで、ランタイムパスと GetStringTrackedDeviceProperty で取得できるパスを組み合わせれば OK です。 とい…
DLL Injection の記事はどうした!と言われそうですが、この後に書く予定です。許してください。 ということで、この記事では、 OpenVR SDK で SetOverlayTransformTrackedDeviceRelative あと適用した座標についての絶対値をとる方法についてメモです。 と…
たとえば以下のような ref パラメータを持ったメソッドがあったとして、 private static void ShaderErrorListUI(Shader shader, ShaderMessage[] messages, ref Vector2 scrollPosition) { // ... } これをリフレクション経由で呼びたい場合は、多分普通に…
Roslyn の Source Generator 系を作っていると出てくる事がある CS8032 系の修正方法について。 そもそも CS8032 / CS8033 ってなんぞやって言うのは、こんな感じ。 CS8032: An instance of analyzer NAMESPACE cannot be created from Analyzer.dll. CS8033…
今日は Roslyn の記事です。また触っているのでね。 今回は、比較的最近対応していた (気がする)、 Roslyn 経由での EditorConfig の扱いについてお話しします。 Roslyn では、コード内で以下のようにすることで、 EditorConfig から設定を引っぱってくるこ…
前回は UXML で独自のコントロールを作成しましたが、今回は子要素を取得していろいろやってみようと思います! 渡し方は Unity 公式ドキュメントで触れられている slot ではなく、単純に以下のような子要素 (ここでいう TabContent )となります。 <controls:Tab> <controls:TabContent title="全体設定"> </controls:TabContent> </controls:Tab> とい…
前回はコールバックを作成しましたが、今回は独自のコントロールを作ってみましょう! ということで、早速 UXML と C# スクリプトを書きます。 たとえば、こんな感じのメッセージボックスを作りたい場合は、 以下のような UXML になると思います。
C# + UXML でエディター拡張を書いている際、 Binding 中の変数に対して、値が代入されるタイミングである処理を呼びたい、みたいなことはあると思うんですが、その方法の紹介です。 といっても Unity 2019 と 2020 では微妙にやり方が変わっているので、今…
みなさん Unity 2019 辺りから搭載されてる UXML と USS 使っていますか? Web で調べてもほぼほぼ情報が出てこないこいつ、 Web 界隈であり WPF 界隈でもあったわたしからすれば天国のような開発環境なんですが、 CSS の弱めのサブセットということでしかな…
Visual Studio の PostBuild イベントなどで使うツールで、エラーフォーマットを Visual Studio 側にあわせてあげることで、 それらをエラーリストに綺麗に表示してくれるようになります。 ということで、今日はその実装方法について書いてみます。 今回は R…
前回に続き、今回も Roslyn Analyzer のお話。 今回はちょっと通常使用外?な感じの使い方です。 Roslyn Analyzer では、基本的には自前の Analyzer コードが実行される時点で、現在有効となっているプリプロセッサが適用されたものが渡されます。 例えば、 …
ここ数ヶ月くらい、ずっと VRChat 向けの Roslyn Analyzer を作って得られた知見を放出していく系私です。 今回は、ユニットテストのお話。 Roslyn Analyzer のテストは、多くの場合、ソースコードをインプットとして、どの Diagnostic が、どういった場所に…
BOOTH とかで商品を配布していて、共通の部分とかを配布するときに、 UPM 経由で依存を入れたいときとかの方法。 UnityPackage に含めると他のと被った場合、古いものをインポートされると困る!的な場合、 (個人的には) UPM 経由でインストールさせるのがよ…
最近は Toon Shader の勉強をしている私です。 Unity のシェーダーでは C# コードで GUI を自分で組めるのですが、 Tiling と Offset に対応していると、邪魔だと感じるときがあるので、良い感じに表示するための方法。 普通に作るとこんな感じになるとおも…