はなちるのマイノート

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

Unity

【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で動く…

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

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

【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の紹介動画があったので、自分でも触ってみようかなと思った次第です。結果としてあんまり良い結果が得られなか…

【Unity】「AudioMixerのVolume(dB, -80~0)←→SliderのValue(0~1のfloat)」の相互変換コード

はじめに AudioMixerのVolumeをスライダーを用いて変更したいと思った際、Volumeは-80~0の範囲でSliderは0~1の値と少し厄介でした。 AudioMixerdocs.unity3d.comそれらの変換方法について紹介をしたいと思います。 はじめに 変換方法 変換方法 volumeをスラ…

【Unity】AudioClipからWAVEファイルを生成する

はじめに 前回WAVEファイルからAudioClipを動的に生成する記事を書きました。www.hanachiru-blog.com今回はその逆でAudioCliipからWAVEファイルを作ってみたいと思います。 はじめに WAVEファイルの形式 AudioClipとの対応 コード WAVEファイルの形式 前述の…

【Unity】UTFで「UNITY_INCLUDE_TESTS」があると通常のビルドにはテストコードが含まれないようになっているらしい

はじめに Unity Test Framework(UTF)のPlayModeを利用していた際、実機ビルドしたときにコードが含まれちゃうんじゃないかと不安になってしまいました。 docs.unity3d.com 対応プラットフォーム結果的に含まないっぽいですが、一応実験をしてみました。 はじ…

【Unity】Unity2022を起動したときに「To run this application, you must install missing frameworks for .NET.」というエラーが出てきた時の対処法

はじめに Unity2022をインストールして起動しようとしたところ、以下のようなエラーが出てきました。 To run this application, you must install missing frameworks for .NET.Would you like to download it now? エラー対処法をメモしておきます。 対処法…

【Unity】「InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.」というエラーの対処法

はじめに 以下のようなエラーが出てきたので、対処法をメモしておきます。 InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player …

【Unity】Unity公式のNewtonsoft JsonとNuGetからのdllを共存させる

はじめに Unity2020よりPackageManagerからNewotonsoft.jsonがインポートできるようになりました。 Unity2020でNewtonsoft.Jsonを入れる - Qiita Unity公式のNewtonsoft.jsonそれ以前ではdllを入れていたwww.nuget.orgただUnity公式のものとNuGetから取って…

【Unity】WAVファイルからAudioClipを動的に生成する(WAVEのファイル構造解析)

はじめに 今回はWavファイルからAudioClipを生成する方法について書きたいと思います。https://docs.unity3d.com/ja/2018.4/ScriptReference/AudioClip.Create.html https://docs.unity3d.com/ja/2018.4/ScriptReference/AudioClip.SetData.html はじめに 利…

【Unity】Unity2020.3.32f1でEnumerable.ReverseよりもArray.Reverseがめちゃ遅いんだが??

はじめに Unityを触っていて、なんだかArray.Reverseが遅く、Enumerable.Reverseにしてみたら速くなったという不思議な現象に出会いました。 https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.reverse?view=net-6.0 https://docs.micros…

【Unity】Unity公式のObjectPoolを使ってみる(内部実装も一部紹介)

はじめに 今回はObjectPoolについて紹介していきたいと思います。 The object pool pattern is a software creational design pattern that uses a set of initialized objects kept ready to use – a "pool" – rather than allocating and destroying them …

【Unity, C#】InternalsVisibleToを用いて特定アセンブリからinternalにアクセスできるようにする

はじめに 今回はInternalsVisibleToという属性(Attribute)について紹介したいと思います。 同一アセンブリ内でないとアクセスできない皆さんご存知かと思いますが、internalを利用することで同一アセンブリでしかアクセスできないようにすることができます。…

【Unity】NuGet importer for Unityを使って簡単にNuGetパッケージをUnityに導入する(NuGetForUnityの後継者になりうるか)

はじめに 今回はNuGet importer for UnityというNuGetのパッケージをUnityへ導入できるようにするエディタ拡張を紹介したいと思います。github.com 一応UnityでNuGetといえばNuGetForUnityが有名だと思いますが、バージョンの指定がうまくできなかったりエラ…

【Unity, C#】K4os.Compression.LZ4を使ってLZ4の圧縮・展開をしてみる

はじめに 今回はUnityでLZ4を用いてバイト配列を圧縮してみるという記事になります。 LZ4 は圧縮と展開の速さに焦点を当てた可逆圧縮アルゴリズムである。バイト指向の圧縮方法であるLZ77ファミリーに属する。 gzipのようなアルゴリズムより低い圧縮率である…

【Unity, iOS】OnnxRuntimeをiOS端末で動作するように修正してみる

はじめに 今回はOnnxRuntimeをiOSで動作させてみようという記事になります。github.com ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator 一応公式でiOSに対応していると記述されていますが、Unityで動作させるのに…

【Unity】OpenJTalkがWin, Mac, Andriod, iOSで動くようなC#ラッパーを作りたい①

はじめに UnityでOpenJTalkを利用したく、今までOpenJTalkForUnityとSharpOpenJTalkを試してきました。github.comgithub.comどちらも一部プラットフォームのUnityでは動作確認できたのですが、iOS・Androidでは動作は確認できていません。 ライブラリ 公式対…

【Unity】SharpOpenJTalk.Langを用いてテキストから音素ラベルを抽出してみる

はじめに 今回はSharpOpenJTalk.Langというライブラリを利用してテキストから音素ラベルを抽出してみる記事になります。 github.com 前回SharpOpenJTalkの紹介をしましたが、SharpOpenJTalk.Langは音素ラベルの抽出のみを備えたライブラリのようですね。 www…

【Unity】AssetPostprocessorを利用してアセットをインポートした前後に処理を走らせる

はじめに 今回はAssetPosprocessorを利用してアセットをインポートした前後に処理を走らせてみる記事になります。docs.unity3d.com はじめに 使い方 関数一覧 Postprocess Preprocess 応用例 特定のフォルダにファイルが追加・削除されたときに操作を行う Te…

【Unity】IPreprocessBuildWithReport,IPostprocessBuildWithReportを利用してビルド前後に処理を挟む

はじめに 今回はIPreprocessBuildWithReportとIPostprocessBuildWithReportを使ってビルド前後に処理を挟んでみるという記事になります。 はじめに 概要 使い方 概要 公式ドキュメントは以下の通り。docs.unity3d.comdocs.unity3d.com 使い方 public class C…

【Unity, XCode】XCodeでライブラリ(dylib, bundle, a)を作成してUnity(iOS)で利用してみる

はじめに 今回はXCodeでライブラリ(動的リンク, 静的リンク)を作成してUnityで利用してみたいと思います。具体的には動的ライブラリ(共有ライブラリ)の.dylib,動的ライブラリ(バンドル)の.bundle,静的ライブラリの.aの3種類について紹介します。またUnity…

【Unity】LocalizationのLocal Variablesをスクリプトから設定する

はじめに 今回はLocalizationのLocal Variableをスクリプトから設定してみる記事になります。 Local Variables(ローカル変数)を活用している様子LocalizeStringEventコンポーネントから設定する方法はよく紹介されているのですが、あくまでスクリプト上でLoc…

【Unity】エディタ拡張でEnumを複数選択できるEnumMaskFieldは廃止されEnumFlagsFieldに置き換わったぽい

はじめに エディタ拡張でEnumを複数選択する要素を作りたいときはEnumFlagsFieldを使おうねという記事になります。 Enumを複数選択 以前(Unity何からは要調査)はEnumMaskFieldで実装できたのですが、少なくともUnity2017.4の段階ではObsoleteつまり廃止とな…

【Unity】Text Animator for Unityを使って簡単にTextMeshProにアニメーションをつける

はじめに 今回はText Animator for Unityというアセットの紹介になります。 動作している様子ざっくり紹介するとRich Text Tagをつけるとそれに対応したアニメーションをする感じで、設定自体も簡単なのですぐに習得することができると思います。 はじめに …

【Unity】AssetStudioでUnity製のゲーム・AssetBundleの中身を覗き見・エクスポートする(悪用はしないように)

はじめに 今回はAssetStudioというツールを利用して、AssetBundleを抽出&解析してみるという記事になります。github.com AssetBundleの中身を解析している様子あんまり深く掘っていくとグレーな予感がしてきますが、逆に開発者にとってもこういった危険性が…