はなちるのマイノート

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

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

2022年を振り返り、大学院生TRPGやSwitchリリース、アプリリリースなど

はじめに 2022年も今日で終わり。毎年振り返り記事を書いていたので、今年もやっていきます。www.hanachiru-blog.com はじめに 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 さいごに 1月 Switchでリリースしたクローズドサークルからの脱出を有名な…

【Unity】アセットが変更時にアセットの自動更新をしないようにする(自動コンパイル無効化, Auto Refresh)

はじめに 今回はスクリプトが変更されたときに自動でコンパイルがされないようにする方法について紹介をしたいと思います。docs.unity3d.com はじめに Auto Refresh 再生時にコンパイルを行う Auto Refresh Preferences/Asset Pipline/Auto Refresh(Unity202…

【Unity】「Unable to find player assembly: Library/PlayerScriptAssemblies/UnityEngine.TestRunner.dll」というエラーの対処法(Burstのバージョンによるエラー)

はじめに プロジェクトをビルドしようとしたところ、以下のようなエラーが出てきてしまいました。 Unable to find player assembly: Library/PlayerScriptAssemblies/UnityEngine.TestRunner.dll UnityEngine.Debug:LogWarning (object) Unity.Burst.Editor.…

【Unity】Fullscreen ShaderGraphというShaderGraphでフルスクリーンエフェクトが作れる機能が実装された(Unity2022.2以降)

はじめに Youtubeの公式チャンネルにkeifiro神が以下の動画をあげていました。www.youtube.com動画も4分くらいなので正直そちらを見た方が良いかと思いますが、Fullscreen ShaderGraphについてブログにまとめておきます。あとURPとHDRPに対応していますが、…

【Unity】NativeArray<T>からSpan<T>へ変換する方法(2022.2以前はunsafe, 2022.2以降はAsSpan)

はじめに 今回はNativeArray<T>からSpan<T>への変換方法を紹介したいと思います。docs.unity3d.com はじめに 環境 2022.2以前 2022.2以降 環境 Unity2022.2.0b16 2022.2以前 unsafeを利用する必要があります。 private unsafe void Start() { // NativeArrayの生成</t></t>…

【Unity】Scripted Importerを使ってUnityが対応していない拡張子のファイルに対応する(テキスト暗号化も)

はじめに 今回はScripted Importerについて紹介したいと思います。 Scripted Importer は Unity スクリプティング API の一部です。Scripted Importer を使用すると C# でカスタムアセットインポーターを作成できます。これにより、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で動く…