はなちるのマイノート

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

【Unity】asmdefのVersion Definesを利用して特定のパッケージ(の特定バージョン)がある場合にのみシンボル定義を行う

はじめに 今回はasmdefのVersion Definesについて取り上げたいと思います。 Version Definesdocs.unity3d.com はじめに 概要 バージョン指定の式の書き方 以上 以上・以下 より大きい・より小さい 等しい 概要 Version Definesを用いることで特定のパッケー…

【Unity】Compilation Visualizer for Unityを用いてアセンブリのコンパイルプロセスを可視化する

はじめに 今回はCompilation Visualizerというアセンブリのコンパイルプロセスを可視化することができるツールを紹介したいと思います。github.com 概要 Compilation Visualizerはアセンブリのコンパイルプロセスを可視化するツールです。 具体的に以下のよ…

【Unity】LocalizationのStringTableCollectionを一括でCSVに出力するエディタ拡張を作った

はじめに Localizationで利用している大量のStringTableCollectionをCSVに出力してほしいとの要望があったのですが、一々LocalizationTablesWindowをいじってCSVに出力するのはかなり辛そうだと思いました。 LocalizationTablesWindowぱっと調べてみたところ…

【Unity】スクリプトでプロジェクト内の特定のScriptableObjectを取得するやり方(Editor拡張で便利)

はじめに 今回はProject内(Assets/以下)に含まれているScriptableObjectを探す方法を紹介したいと思います。 はじめに やり方 やり方 以下の3つのメソッドを利用します。 メソッド 意味 AssetDatabase.FindAssets t:〇〇とすると特定のtypeのアセットのGUID…

【Unity】asmdefのDefine Constraintsを利用して特定のシンボルが定義されているときのみアセンブリを含める

はじめに 今回はasmdefのDefine Constraintsについて取り上げたいと思います。 Define Constraints はじめに 概要 設定の仕方 シンボル定義について Define Constraintsの書き方 複数の記述 シンボルが未定義 または 概要 Define Constraintsは特定のシンボ…

Vue.js+GitHub+CloudFlare Pagesで無料でサイトを公開する

はじめに Webサイトを新しく公開しようということで色々と調べたところ、なるべく簡単かつ無料でやろうと思い以下を採用しました。 Vue.js GitHub CloudFlare Pages イメージ図一度環境構築さえ出来てしまえば、GitHubの特定ブランチを更新すればサイトが自…

【Unity】Unity Test Framework v1.3からUniTaskを使わなくても簡単に非同期処理のテストができるようになった

はじめに Unity Test Framework(旧:Unity Test Runner)で非同期のテストをしようとすると以下のように書く事が主流?でした。 [UnityTest] public IEnumerator DelayIgnore() => UniTask.ToCoroutine(async () => { var time = Time.realtimeSinceStartup; T…

【Unity】Assembly Definition Referenceを用いて特定アセンブリにフォルダ以下のスクリプトを含める(asmdefによるファイル配置の制約に有効)

はじめに 今回はAssembly Definition Referenceについて紹介をしたいと思います。 Assembly Definition References The scripts in the folder containing the Assembly Definition Reference asset, including scripts in any child folders (unless those …

【C#】非同期using(await using)を利用してIAsyncDisposableインターフェイスを実装するオブジェクトの破棄・解放処理を実行する

はじめに 今回は非同期using(await using)について紹介したいと思います。learn.microsoft.com はじめに 概要 必ずIAsyncDisposableを実装する必要はない IDisposableとIAsyncDisposable 概要 IAsyncDisposableを実装しているオブジェクトに対して、await us…

【Unity】EditorUtility.Open〇〇とEditorUtility.Save〇〇を用いてファイル・フォルダ選択パネルを利用する

はじめに 今回はファイル・フォルダ選択パネルに関係する6つのメソッドについて紹介をしたいと思います。 EditorUtility.OpenFolderPanel EditorUtility.OpenFilePanel EditorUtility.OpenFilePanelWithFilters EditorUtility.SaveFolderPanel EditorUtility…

【C#, Unity】C#7.0から導入された「ValueTask<TResult>」を利用してヒープアロケーションを減らしたかった(実験付き)

はじめに 今回はC#7.0より導入されたValueTask<TResult>について取り上げたいと思います。 learn.microsoft.comまずValueTask<TResult>の説明の前に、Task<TResult>を利用した非同期処理には以下のような問題点が指摘されていました。 非同期メソッドでも同期処理になる場合が多い Task</tresult></tresult></tresult>…

【Unity】Tensorflow Liteを利用してUnityで機械学習の推論を行う(tf-lite-unity-sampleを利用)

はじめに Unity SYNCを見ていたところ、以下の講演にて面白い事を話されていました。youtu.be 初手Tensorflow Lite(以下 TFlite)でCPU推論がお勧め。理由は以下。 ONNXRuntimeやBarracudaと比較して多くのケースで推論が最速 私もONNXRuntimeやBarracudaを利…

【C#】「"Year, Month, and Day parameters describe an un-representable DateTime."」というエラーが出てきた時の対処法

C#

はじめに 以下のようなエラーに遭遇しました。 "Year, Month, and Day parameters describe an un-representable DateTime." // Google翻訳 「Year、Month、および Day パラメータは、表現できない DateTime を記述しています。」 その対処法をメモしておき…

【C#】C#8.0から追加されたIAsyncEnumerableを使って非同期ストリームを実装する

C#

はじめに 恥ずかしながら最近になってやっとIAsyncEnumerableというものを知りました。 learn.microsoft.com ufcpp.net これは非同期ストリームと呼ばれるもので、ざっくり言うとasync/awaitとyieldが共存できるようになったというイメージでしょうか。C#8.0…

【Unity】「OggVorbisEncoder」を用いてWavファイルからOggファイルに変換を行う

はじめに 今回はOggVorbisEncoderというライブラリを用いたWavからOggへのファイル変換の仕方について紹介したいと思います。github.com一応Macでの動作確認はできたので、Windowsでもいけると思います。(是非調べてみてください) はじめに 概要 インストー…

【Unity】GarbageCollectorクラスでガベージコレクションのオンオフなどを制御する

はじめに 今回はGarbageCollectorクラスを用いてガベージコレクションのオン・オフなどを制御してみようという記事になります。 docs.unity3d.com はじめに ガベージコレクションを発生させないようにする GCModeの変更された時に処理を挟む インクリメンタ…

【Go言語】暇なので公式ドキュメントを見ながらGo言語を入門してみた(Hello, WorldからREST APIまで)

はじめに 今回はGo言語を入門してみるという記事になります。一応簡単なREST APIを実装するあたりまでは書いていきたいと思ってはいます。またあくまで私の備忘録的な意味合いで記述していくので、ちゃんと学びたい方は公式ドキュメントを見るのが一番です。…

【C#】「ConfuserEx2」を用いてコードを難読化をする(Windows,プリセット毎の実験結果付き)

C#

はじめに 今回はConfuserEx2という.NETアプリケーションのためのオープンソースな難読化ツールを紹介したいと思います。mkaring.github.ioまた公式ドキュメントは以下にあります。 github.com はじめに 概要 サポート 実験環境 ダウンロード 下準備 使い方 C…

【Unity, C#】ライブラリを用いずエクセルファイル「.xlsx」の中身から要素を取得する(Zip展開)

はじめに 今回はエクセルのファイル(.xlsx)からライブラリを用いずに中身を調べる手法について紹介をしたいと思います。Unityでエクセルのデータを扱おうとすると、NPOIというライブラリを導入することが多いようですね。 www.nuget.org github.comただ最近.…

【Unity】公式パッケージ「Editor Coroutines」を利用してエディタ内でCoroutineを扱う事ができるようにする(内部実装で説明)

はじめに 今回は公式パッケージであるEditor Coroutinesについて紹介をしたいと思います。docs.unity3d.com 概要 Editor Coroutinesはエディタ内でCoroutineを扱う事ができるようにした公式パッケージです。 The Editor Coroutines package allows the user …

【Unity】Profiler.BeginSampleとProfiler.EndSampleを用いてコードの一部をプロファイリングする

はじめに 今回はProfilerクラスのメソッドであるBeginSampleとEndSampleについて紹介したいと思います。 はじめに 概要 補足 概要 まずは公式ドキュメントの説明を載せます。 // Profiler.BeginSample カスタムラベルの付いたコードの一部のプロファイリング…

【Unity】Physics.RaycastAllではなくPhysics.RaycastNonAllocを利用してGC.Allocを防ぐ(実験結果付き)

はじめに 今回はPhysics.RaycastAllとPhysics.RaycastNonAllocの違いについて紹介したいと思います。docs.unity3d.comdocs.unity3d.com はじめに 概要 違い 実験 注意点 概要 Physics.RaycastAllとPhysics.RaycastNonAllocはどちらもRayを飛ばしてぶつかった…

【Unity】エディタ上でスクリプトからAudioClipを再生する(Unity 2020.2からPlayClip -> PlayPreviewClipになったので注意)

はじめに 今回はエディタ上でスクリプトからAudioClipを再生する方法を書きたいと思います。具体的な利用場面は、EditorWindow内でボタンを押したら音声を出力したいといった場合とかですかね。 はじめに 概要 やり方 補足 補足2 概要 エディタ上で音声を再…

【Unity】NAudioを導入して、WAVEファイルをMP3ファイルに変換する(Windowsのみ動作確認,Macではダメだった)

はじめに 今回はNAudioというライブラリを導入して.wavから.mp3に変換したいと思います。また先に結論を言うと、WindowsではできましたがMacでは(私の調べた範囲で)できていません。 はじめに NAudioとは 環境 インストール WAVからMP3に変換する Macで動く…

Steamでストアプレゼンスの"近日登場として投稿..."ボタンが押せないバグの原因は「Standard Packages」らしい

はじめに Steamのストアページを公開する際に以下のステップを踏みます。 準備: ストアページを近日登場として掲載するには、まず新しいアプリケーションを作成し、リリースのチェックリストにある項目を完了し、Valveによるページのレビューと承認を受ける…

【Unity】ScriptableObjectをテキスト形式ではなくバイナリ形式で保存する(PreferBinarySerialization)

はじめに 今回はPreferBinarySerializationという属性(Attribute)について紹介したいと思います。docs.unity3d.com はじめに PreferBinarySerializationとは? メリット デメリット 補足 PreferBinarySerializationとは? PreferBinarySerializationをScript…

【GitHub Actions】GitHub Actions初心者が公式ドキュメントを見ながら理解を深めていったメモ①

はじめに 今までGitHub Actionをまともに使ったことがなかった私ですが、そろそろ学んでいこうと思い公式ドキュメントを見ながら勉強し出しました。https://docs.github.com/ja/actions/quickstartdocs.github.comそこで学んだことをメモしておきます。 はじ…

【Unity】Physics.autoSimulationを用いて物理演算のシミュレートのオン・オフを切り替える

はじめに 今回はPhysics.autoSimulationを利用して物理演算のシミュレートのオン・オフを切り替えるという記事になります。 Physics.autoSimulationの動作 はじめに Physics.autoSimulationとは? もっと詳しく 手動で物理演算をシミュレートする Physics.au…

【Unity】stackallocを用いる事でGC.Allocを発生せずに配列を確保する

はじめに 今回はUnityでのstackallocの使用を想定して、簡単な説明記事を書きたいと思います。 はじめに メモリ領域について stackallocとは stackallocの利用 stackalloc利用の注意点 Spanの注意点 おまけ メモリ領域について Unityでは以下の大きく分けて3…

【Unity】Burst Direct CallでXor Shiftを活用したノイズを作ろうとしたら失敗した話

はじめに 今回はBurst Direct Callを触って、簡単な計測をしてみたという記事になります。www.youtube.com公式のYoutube動画でBurst Direct Callの紹介動画があったので、自分でも触ってみようかなと思った次第です。結果としてあんまり良い結果が得られなか…