はなちるのマイノート

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

2023-09-01から1ヶ月間の記事一覧

【Unity】asmdefで"必須パッケージ"と"任意パッケージ"を定義する方法

はじめに 今回はasmdefで必須パッケージと任意パッケージを定義する方法について紹介をしたいと思います。 任意パッケージのサンプル(左)と必須パッケージのサンプル(右) はじめに その前に やり方 必須パッケージのやり方 任意パッケージのやり方 その前に …

【C#】fixedステートメントを用いてGCによるアドレスの変更を阻止する(GC管理下だとコンパクションの可能性があるため)

C#

はじめに 今回はfixedステートメントについて書きたいと思います。 はじめに 概要 使い方 参考 概要 GC管理下にあるオブジェクトは、アドレスが最適化のために移動されることがあります。詳細は未確認飛行さんのコンパクションの箇所を読むと良いでしょう。 …

【C#】BitConverter.GetBytesはbyte配列が生成されてしまうので、極力BitConverter.TryWriteBytesを利用してAllocation削減する

はじめに 今回はBitConverter.GetBytesとBitConverter.TryWriteBytesに焦点をあててAllocationについて書きたいと思います。learn.microsoft.com learn.microsoft.com はじめに 概要 BitConverter.TryWriteBytesを利用する 利用サンプル1 利用サンプル2 参考…

【C#】Conditional属性は呼び出し元のシンボル定義を参照するので注意、またその対処法

C#

はじめに 今回はConditionalAttributeは呼び出し元のシンボル定義を参照していることについて取り上げたいと思います。learn.microsoft.com メソッド呼び出しがスキップされる場合とされない場合 はじめに 概要 気をつけたいこと 対処法 概要 そもそもCondit…

【C#】CallerMemberName, CallerFilePath, CallerLineNumberを用いてメソッドの呼び出し元の情報を取得する(メソッド名またはプロパティ名, パス, 行番号)

はじめに 今回はメソッドの呼び出し元情報を取得できるようになる3つの属性(CallerMemberName・CallerFilePath・CallerLineNumber)を紹介したいと思います。 はじめに 概要 CallerFilePath CallerLineNumber CallerMemberName 使い方 実験 概要 CallerMember…

【Unity】Unity.Collections.xxHash3.StreamingStateを利用してデータ少しずつ入力しながらハッシュ値を計算する

はじめに 前回xxHash3.Hash64とxxHash3.Hash128を紹介したのですが、今回はいくつかのデータをそれぞれ計算した後にハッシュ値を取得できるxxHash3.StreamingStateを紹介したいと思います。 www.hanachiru-blog.com // サンプルコード // 128bits xxHash3.St…

【C#】Utf8Formatter.TryFormatを用いて一般的なデータ型をUtf8 文字列として書式設定する

C#

はじめに 今回はUtf8Formatter.TryFormatについて紹介したいと思います。 int value = 999; // e7, 3, 0, 0 Console.WriteLine(string.Join(",", BitConverter.GetBytes(value).Select(x => x.ToString("x")))); // 書き込み先のメモリ領域 Span<byte> destination</byte>…

【C#】.NETの内部実装がGitHubで公開されていたので見てみる(Contributeも可)

C#

はじめに 先日教えていただいたのですが、どうやら.NETの内部実装を見れるGitHubのRepositoryが公開されているらしいです。 This repo contains the code to build the .NET runtime, libraries and shared host (dotnet) installers for all supported plat…

【C#】IBufferWriter<T>の使い方・実装の仕方について学んでいく(公式のArrayBufferWriter<T>の内部実装を見ながら)

C#

はじめに 今回はIBufferWriter<T>の使い方・実装の仕方について書きたいと思います。learn.microsoft.com はじめに IBufferWriterの利用者視点での使い方 IBufferWriterの実装者視点での使い方 応用 File書き込みとかにも利用したい 参考 IBufferWriterの利用者</t>…

【C#】Marshal.AllocHGlobal・NativeMemory.Alloc・NativeMemory.AllocZeroedを利用してアンマネージドメモリを確保する方法

C#

はじめに 今回はアンマネージドメモリを確保・破棄する方法について以下の3つを紹介したいと思います。 Marshal.AllocHGlobal NativeMemory.Alloc NativeMemory.AllocZeroed はじめに 概要 Marshal.AllocHGlobal Marshal.FreeHGlobal NativeMemory.Alloc Nat…

【Unity】Unity公式のハッシュアルゴリズムxxHash3がCollectionsパッケージに入っているので使ってみる

はじめに 今回はUnity公式のxxHash3について紹介をしたいと思います。 public void Start() { // unmanagedなHeap確保 NativeArray<byte> input = new NativeArray<byte>(10000, Allocator.Temp, NativeArrayOptions.UninitializedMemory); for (var i = 0; i < input.Le</byte></byte>…

【C#】RuntimeHelpers.IsReferenceOrContainsReferences<T>メソッドを利用して"参照型"か"参照型を含む値型"か調べる

C#

はじめに 今回はRuntimeHelpers.IsReferenceOrContainsReferences<T>について紹介をしたいと思います。learn.microsoft.com はじめに 概要 使い方 考察 参考 概要 public static bool IsReferenceOrContainsReferences<T> (); 指定された型が参照型であるか、また</t></t>…

【C#】C#9.0から導入された静的匿名関数(Static anonymous functions)を利用して状態のキャプチャを禁止する

はじめに 今回はC#9.0から導入された静的匿名関数(Static anonymous functions)について取り上げたいと思います。 learn.microsoft.com はじめに 概要 参考 概要 ラムダおよび匿名メソッドに対して ' static ' 修飾子を許可します。これにより、含まれるスコ…