はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

2024-01-01から1年間の記事一覧

【Unity】UI ToolkitのScrollViewを強制的に再描画させる方法

はじめに UI Toolkitを使用していて、ScrollViewのScrollbarを再描画したいと思い以下のコードを書きました。 var scrollView = uxml.Q("SampleScrollView"); scrollView.MarkDirtyRepaint(); 割と名前から推測してしまっていますが、これだと特に動作しない…

【ReShaper】コードアノテーション属性の「UsedImplicitly」でRider(ReShaper)にメソッドが使用されることをマークする

はじめに Rider(ReShaper)は、利用されていないメソッド等に対してはコメントを表示してくれます。(自身で警告にしたりと設定可能) Riderがメソッド未使用を教えてくれている様子ただリフレクションや外部ライブラリから利用されるので、検出の対象外にして…

【VS Code】VS CodeでもShift ShiftでIntelliJ IDEAのSearch Everywhereのような挙動にさせたい

はじめに 私は普段IntelliJのRiderを利用しているのですが、Shift ShiftによるSearch Everywhereを高頻度で活用させてもらっています。もう困ったらとりあえず叩くレベルです。 Search Everywhereの公式サンプル このコマンドを使用して、タイプ、シンボル、…

【Unity2024 Advent Calendar】Unityのコードメトリクスを可視化するための分析基盤の作り方(CodeCoveragePackage + coverlet.collector + octocov + BigQuery + Looker Studio)

はじめに こちらはUnity2024 Advent Calendarの12/20記事になります。是非他の方の記事もチェックしてみてください。 qiita.com今回はUnityでのコードメトリクスを可視化するための分析基盤の作り方について紹介したいと思います。 PRのコメントでコードメト…

【C#】C#12から追加されたコレクション式を自身が定義した型も対応できるようにする方法

C#

はじめに C#12(.NET8)からコレクション式というものが導入されました。 int[] array = [1, 2, 3]; List<int> list = [1, 2, 3]; Span<int> span = [1, 2, 3]; ReadOnlySpan<int> ros = [1, 2, 3]; ImmutableArray<int> immutable = [1, 2, 3]; [1, 2,3]のようにして配列などのコ</int></int></int></int>…

【C#】MSBuildで環境変数によってDefineConstantsを用いてコードを切り替える方法

C#

はじめに 今回はMSBuildで環境変数によってDefineConstantsを用いてコードを切り替える方法を紹介したいと思います。 はじめに 概要 やり方 実験 概要 環境変数によってC#コードを変更したいこともあるかなと思います。 // 環境変数「HOGE_VERSION」が「1.0.…

【C#】.protoに記載されているコメントをランタイムで取得する方法(--descriptor_set_outを用いてFileDescriptorSetを活用する)

C#

はじめに 今回は.protoに記載されているコメントをランタイムで取得する方法を紹介したいと思います。 // example.proto syntax = "proto3"; import "google/protobuf/descriptor.proto"; option csharp_namespace = "Protobuf.Sample"; // メッセージ定義に…

【C#】どうやらMicrosoft.Extensons.LoggingはMessageTemplateのIndexによる順序の制御に対応していないらしい

C#

はじめに Microsoft.Extensions.LoggingはMessageTempalteを用いています。 messagetemplates.org // MessageTempalteを用いたログ出力 string p1 = "param1"; string p2 = "param2"; // Parameter values: param1, param2 logger.LogInformation("Parameter…

【C#】coverlet.collectorで生成されたファイルなどの特定ファイルをコードカバレッジ収集対象外にする

C#

はじめに 今回はcoverlet.collectorで生成ファイルなどの特定のファイルをコードカバレッジ収集対象外にする方法を紹介したいと思います。 はじめに やり方 コマンド引数を用いる runsettingsを用いる 参考 やり方 以下の2種類の方法があります。 コマンド引…

【C#】recordの一部プロパティだけで等価かどうかを判定するように変更(Equals・GetHashCode置き換え)する方法

C#

はじめに recordはとても便利な糖衣構文ですが、例えば一部のプロパティだけで等価かどうか判定したいような場合がありました。例えばDDDのEntityとかですね。実際にrecordがどういう実装がされているのかは以下の記事を見ると分かると思います。 www.hanach…

【Unity】com.unity.search.extensionsに依存しているとEditMode TestがFailする話

はじめに 先日Unityが公開している(といってもOfficialではない)パッケージであるcom.unity.search.extensionsに依存しているプロジェクトのEditMode TestがFailしてしまうことに気が付きました。 EditMode Testが失敗している様子ValidateCustomIndexation(…

【Rider】「実行 / デバッグ構成(Run/Debug Configurations)」を用いて引数を与えながらデバッグ実行をする

はじめに Riderのデバッガーはとても有用ですが、恥ずかしながら引数を渡しながらデバッグ実行する方法を最近まで知りませんでした。 デバッガーを利用している様子そのやり方を今回は紹介したいと思います。 はじめに やり方 実行構成の編集 他の人と共有で…

【C#】NuGetでGoogle.Protobuf.Toolsをインストールした際のprotoc実行バイナリのパスについて

C#

はじめに protobufを利用する際に、protocを取得する手段の一つとしてGoogle.Protobuf.Toolsを利用するのは割とある方法だと思います。www.nuget.orgしかし毎回その実行バイナリのパスを忘れてしまうのでメモがてらに書き残しておきたいと思います。 はじめ…

【C#】C#13から登場した「OverloadResolutionPriority」を用いてオーバーロードの優先順位を指定する

C#

はじめに C#13で新しくSystem.Runtime.CompilerServices.OverloadResolutionPriorityAttributeが追加されました。 namespace System.Runtime.CompilerServices; [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets…

【Blazor+GCP+terraform】Blazor ServerをCloud Runで動作させてGCSマウントしたファイル一覧を表示する

はじめに 今回はBlazor ServerをCloud Run上で動作させてマウントさせたGCS上のファイルを一覧で表示する簡易サイトの作り方を紹介したいと思います。 実際に動作している様子 はじめに 概要 作り方 .NET 8 Blazor web applicationを作成する GCSのマウント…

【PowerShell】PesterというPowerShell用のテストフレームワークを用いてテストを実装する方法

はじめに 今回はPesterというPowerShell用のテストフレームワークを紹介したいと思います。 $ Invoke-Pester -Output Detailed ./Sandbox.Test.ps1 Pester v5.6.1 Starting discovery in 1 files. Discovery found 3 tests in 2ms. Running tests. Running t…

【C#】マークダウンとC#で数行コードを書くだけで静的サイトが作れる「Statiq Web」を紹介

はじめに .NETの最新情報を毎週投稿してくれるWeekRef.NET: 週刊 .NETですが、どうやらStatiq Web + GitHub Pagesを用いて構築されていることを知りました。 weekref.net気になり調べたところ、C#コードを数行書くだけで、記事を.mdで書くといい感じにサイト…

【PowerShell】いつも書くおまじないメモ(shebang, version指定, errorの扱い)

はじめに 私はPowerShellを書くときに、以下のコードをおまじない的にいつも記述しています。 #!/usr/bin/env pwsh #Requires -Version 7.4 # Paramに関する記述 $PSNativeCommandUseErrorActionPreference = $true $ErrorActionPreference = "Stop"このコー…

【C#】ExcludeFromCodeCoverageAttributeを用いてコードカバレッジ収集の対象外にする

C#

はじめに 今回はdotnet testでコードカバレッジを収集する際にExcludeFromCodeCoverageAttributeを用いて対象外にする設定をする方法を紹介したいと思います。 learn.microsoft.com はじめに コードカバレッジ収集について コードカバレッジの収集対象外に設…

【GCP + terraform】terraformを使用してCloud RunでGCSをMountして利用する(C#)

はじめに 今回Cloud RunにてCloud Storageのバケットをterraformを使用してマウントする方法を紹介したいと思います。 はじめに 概要 GCSの構築 IAM・サービスアカウントの設定 Cloud Runの定義 GCS上のファイルを表示するC#コード 実際に動作している様子 …

【PowerShell】PowerShellならVSCodeでBreakpointもImmediate Windowも利用できる

はじめに PowerShellを推している理由の一つとして、デバッグ機能が充実している点が挙げられます。特に以下の2つは神機能です。 Breakpoint Immediate Window 今回はこの2つの機能をVS Codeで扱う方法を紹介したいと思います。 はじめに その前に Breakpoin…

【C#】CoconaでMicrosoft.Extensions.DependencyInjectionを用いてDIを行う方法

C#

はじめに 今回はCoconaに標準で入っているMicrosoft.Extensions.DependencyInjectionを用いてDIを行う手法を紹介したいと思います。github.comhttps://github.com/mayuki/Cocona/blob/master/samples/InAction.DependencyInjection/Program.cs はじめに やり…

【Unity】生成したコードをPrefabに自動でアタッチする方法

はじめに 今回は生成したコードをPrefabに自動アタッチする方法を紹介したいと思います。 はじめに 概要 コンパイル後にアタッチする 実験 概要 PrefabへのアタッチにはPrefabUtilityを利用すると簡単に実現できます。 docs.unity3d.com private static void…

【Actions】「dorny/paths-filter」を用いてジョブ単位でのpathsを実現する

はじめに GitHub Actionsで特定のフォルダ以下のファイルが変更されたときのみワークフローを実行するにはpathsを使うと思います。 # srcフォルダ以下のファイルが変更されたときのみ実行する on: pull_request: paths: 'src/**.cs' ただjob単位で条件をつけ…

【C#, Actions】coverlet.collector + octcovを用いてプルリクを出した際にコードカバレッジの増減をCIで表示する

はじめに 今回はC#でプロジェクトを構築している前提でPRを出した際にコードカバレッジの増減を表示してくれるCIの作り方を紹介したいと思います。 コードカバレッジの増減表示具体的にはcoverlet.collectorとoctcovというOSSを利用して実現していきます。gi…

【Unity】YetAnotherHttpHandlerを用いてHTTP/2を扱えるHttpClientを作成する

はじめに 今回はYetAnotherHttpHandlerを用いてUnityでHTTP/2を扱う方法を紹介したいと思います。 はじめに 背景 概要 環境 インストール方法 使い方 さいごに 背景 まず.NETが提供するHttpClientですが、.NET Core3.0以降であればHTTP/2に対応しています。 …

【C#】record (class)・record struct・readonly record structがどういう実装になるのかSharpLabでデコンパイルして覗いてみる

C#

はじめに record (class)やrecord struct、readonly record structはとても便利な機能なのですが、たまにEqualの処理どうなってたっけ・プロパティのアクセシビリティなんだっけと私はよくなります。 // record : record classと同じ意味 public record Reco…

【Actions】ステータスチェックジョブを作成してBranch Protectionで指定したjobが通らないとマージできないようにする

はじめに 今回は指定したジョブが成功したかを監視するステータスチェックジョブを作成してBranch Protectionに指定する方法を紹介したいと思います。複数のジョブがあったときに、一つでも失敗してしまうとマージができなくなるようにしていきます。 はじめ…

【Unity】UI ToolkitのTwoPaneSplitViewをコードから動的に生成せずに利用する方法

はじめに UI ToolkitのTwoPaneSplitViewというVisualElementがあるのですが、それがめちゃくちゃ便利です。2つの要素をリサイズできるようにしつつ分割して表示してくれるものになります。 docs.unity3d.com TwoPaneSplitViewよくコードからTwoPaneSplitView…

【Unity】.asmrefはCore CLRがくると動作しなくなるよという話

はじめに UnityはMonoからCore CLRへの移行を進めていますが、Core CLRがくると.asmrefが使えなくなるみたいです。そのあたりを軽く調べてみたので、そのまとめを書き残しておきたいと思います。また現時点ではまだ開発中なので、今後変わるかも知れないので…