えんじにあ雑記!

開発していて学んだことをまとめていきます!

C#

Unity向けSource Generatorの作り方

Unity2021.2以降Roslynの導入によって利用可能になったSource Generator。今回はSource Generatorの実装方法についてまとめます。

Editor拡張コードを書くのが楽になる「UniTyped」使ってみた

Unity上でSerializedObjectやSerializedPropertyに対する型付けされたアクセスを提供するSource Generator「UniTyped」がリリースされていたので触ってみました。

【Unity】アセットのデータサイズを取得する方法

Unityプロジェクト内のアセットのファイルサイズを取得する方法です。

Roslyn APIを使って、構文ツリー解析を行う方法

C#

Roslyn APIを使用して、CSharpコードの構文ツリー解析を行う方法を解説します。 ※こちらの記事は2021.12月のC#アドベントカレンダー6日目の記事になります。

「今日からできるC#のパフォーマンス改善小ネタ10選」を書いてみました

C#

C#についてもくもくと学んでいる中で、意識すれば誰でもできるパフォーマンス改善に繋がる項目をいくつか紹介してみます。

structをusing-statementで使用したらboxingが発生するのか

structをusingステートメントで使用するとboxingされるのかを検証しました。

UnityでRoslyn Analyzerを導入してみた

Roslyn AnalyzerがUnity2020.2から使えるっぽかったのでとりあえず触ってみました。

UnityでC#スクリプトのコンパイル時間を計測する方法

UnityでC#スクリプトのコンパイルにかかった時間を計測するエディタ拡張を実装したので記事にしました。

Unityでデバッグ/本番を切り分けたビルド環境を構築する

Unityのみならず、開発ではデバッグ環境と本番環境を区別して開発することが多いです。 その際にDebug環境でのみ含めたいコードなどがあり、Debug用と本番用を切り分けることができるビルド環境の構築方法をまとめました。

ContentSizeFilterを実装してみる

UnityのLayoutControllerの一つであるContentSizeFilterの挙動を、実際に実装しながら理解してみました。

別スレッドからUIを操作しようとして引っかかった話

UnityでUniTaskを使って非同期処理を実装している際に、別スレッドからUIを操作しようとしてしまいエラーが出てはまったときの対応メモです。

【Editor拡張】Scene名一覧を持つクラスの自動生成

Unityで開発している時に、シーン名を定数文字列として持つクラスを作成することがあります。簡単な作業ですが、自動化できればありがたいなと思いEditor拡張を作りました。

デザインパターンの解説と実装例!

頻出する問題解決の設計パターンであるデザインパターンをいくつか説明します。 デザインパターンを知っておくことは、共通言語にもなり得ますし、設計の引き出しも増えるでしょう。

VSCodeとPlantUMLでクラス図を描く

コーディングを始める前の設計段階で作成するクラス図。 今回はVisual Studio Codeと拡張機能のPlantUMLを使ってクラス図を描く方法をまとめました。

C#のListに対する操作を簡潔に!

C#

Listって色々なところで使いますよね。 要素の中から該当するものを探す、取り出す、削除するなどなど。 自前で書かずとも、それ、既にAPIにあるかもです👍

Unityのコルーチン 〜IEnumeratorのその先へ〜

Unityで頻繁に用いるコルーチン。 その返り値の型として使われるIEnumerator。こいつ一体何者なんだ? 正体を探る旅に出た。

C#でGolangのdeferっぽいこと

C#

最近Golangでサーバサイドを書く機会が増えてきていて、Golangの言語の特徴になるほど〜〜、いいねって感じることがあるのですが、 その中でもdeferが個人的にかなり便利!だったのでC#でもできないかと思いなんちゃってdeferを実装してみた件

UniRxでReactivePropertyのSubscribeにラムダ式が使えない

UniRxを使っている時「ラムダ式はデリゲート型ではないのでIObserverに変換できません」というエラーに遭遇! チュートリアル通り使ってるのになんで!?と困ったことと、解決方法について。

C#でパフォーマンスの良いコードを書く

C#

for/foreach, string/StringBuilder, try-catch/エラー処理, 多次元配列など色々な点から高パフォーマンスの書き方を調査してみました。

C#で自作クラスをHashSetで正しく動作させる

C#

C#のAPIであるHashSet 自作クラスで正しく動作させるにはどうしたらいいの?