Unity
目次 目次 UnityEngine Coreライブラリには署名が必要が無い Apple's privacy manifestのマイルストーン Unityのアップグレード UnityEngine Coreライブラリには署名が必要が無い 3月8日(金)のUnity Forumの投稿によると、Appleとの話し合いの結果、Unit…
概要 UnityとVulkan validation layersの連携 UnityでVulkan validation layersを有効にする具体的な手順 Androidアプリケーションに引数を指定する UnityPlayerActivityを拡張してコマンドライン引数を指定する adb shellから指定する 概要 Vulkan validati…
概要 「Time.maximumDeltaTimeの値を小さくしたのですが、処理落ちが改善しないのは何故ですか?」 という質問が定期的に寄せられます。 パフォーマンスに影響を与えるパラメーターという点に関してはあながち間違ってはいないのですが、1フレームにかかる…
概要 「FixedUpdate()が実行されないフレームがあるのですが、何故ですか?」 この質問が定期的に発生するので、この問題について解説します。 結論 フレームレートとTime.fixedDeltaTimeが一致していない為に発生します。 解説 UnityはPlayerLoopの先頭で下…
概要 WebGLPlayerでマルチスレッドを有効にする為に下記の条件を全て満たす必要があります。 PlayerSettings.WebGL.threadsSupportをtrueに設定する WebGLPlayerを出力するが実行するブラウザー側も WebAssembly threadsに対応している マルチスレッドに対応…
概要 以前、Unity2019以降向けの記事としてWebGLのMemorySizeの指定方法を投稿したのですが、Unity2022では設定方法が変更されていたので、改めてUnity2022以降向けの設定方法を記載します。 unityletsgo.hatenablog.com 設定方法 Player Settings > Publisi…
概要 WebGLプラットフォーム向けにビルド済みのコンテンツを実行する(index.htmlをダブルクリックする)と以下のエラーが表示され、実行できません。 Failed to download file XXX.data.gz. Loading web pages via a file:// URL without a web server is not…
概要 Unity2018まではPlayerSettingsからMemorySizeを設定出来たのですが、Unity2019以降では項目が無くなりました。 そこでUnity2019以降でMemorySizeを指定するにはどうしたら良いのかというお話しです。 r なお、Unity2022以降に関しては設定方法が大きく…
概要 Inspectorから各ComponentのコンテキストメニューにあるResetを実行することで、Componentの値を初期値にリセットすることが出来ますが、それをスクリプトから実行したいといお話しです。 結論 UnityEditor.Unsupported.SmartReset(UnityEngine.Object …
まとめ Object.FindObjectsOfType(Type type)の代わりにObject.FindObjectsByType(Type type, FindObjectsSortMode sortMode)を使用すると処理負荷が軽減します。 Object.FindObjectsOfType (type)としている箇所をObject.FindObjectsByType(type, FindObjec…
はじめに AssetBundleの処理の流れがモヤモヤしていたので少し調べてみました。 調査を行ったUnityのバージョンはUnity2021.3.13f1です。他のバージョンではここで記載した内容と異なっている可能性があります。 また、自分の調査に不備があり間違っている可…
概要 iPhoneX以降ディスプレイ内に内蔵カメラ等が組み込まれたことにより、画面上に表示されない領域(いわゆるノッチ)というものが現れました。一方、Androidプラットフォームでもノッチが組み込まれたデバイスがリリースされるようになり、Androidではノ…
目的 AssetBundleをダンプしてAssetBundleの構造を理解します。 検証環境 Unity2021.3l7f1で検証を行いましたが、Unity2017以降であれば特に変更は無いと思います。 Tools AssetBundleをダンプする為にはWebExtract・binary2textの2種類のToolを使用します…
概要 Android SDKに含まれるadbコマンドをUnityEditor上から実行する方法に関するお話しです。 結論 スクリプトリファレンスには記載が無いですが、実はUnityEditor.Android配下にADBクラスが存在しているのでそれを使えば簡単にUnityEditor上からadbコマン…
概要 AssetBundleのビルドオプションであるBuildAssetBundleOptionsに関しての解説です。 スクリプトリファレンス読めば判ることから何を言っているかわからんことまで解説しています。 尚、Unity2021.3時点での内容で記載しています。 AssetBundleのファイ…
概要 Androidネイティブでのプロファイリングといえばsystraceですが、Android 9(APIレベル28)以降のデバイスであれば、デバイス上から直接システムトレースの記録を行うことが可能です。 今回はデバイス上からシステム トレースを行う方法を説明します。 設…
Shader Cacheとは? OpenEL GSのデバイスでは、Shader(Snipet)はRuntime上(デバイスで実行されるアプリケーション内)でGPU Programにコンパイルされます。このコンパイルは非常に処理負荷が高い為、コンパイルされたGPU ProgrameをCacheして再利用しようとい…
概要 Androidプラットフォームでビルドを行う際、Gradle Templateをベースとしてbuild.gradleが生成されます。 これらに関しては、マニュアルで説明はされていますが、Template変数はマニュアルに記載されていないものが多々あります。そこで、マニュアルを…
概要 Unity2020へバージョンアップしてから、TextAssetのtextプロパティの処理負荷が上がっている気がしたので、Unityのソースコードを確認したらプロパティへアクセスする毎にbytesデータを処理するように変更されていたというお話しです。 Unityのソースコ…
はじめに UnityはAndroid Playerのビルドにgradleを使用しています。 Unity Editor上でバイナリの生成迄行う場合は、気にする必要がないのですが、インクリメンタルビルドを行う場合、Unityが内部で使用しているgradleとコマンドライン(Terminal)で使用するg…
はじめに アプリケーションがクラッシュした時、Logcatにはクラッシュがどのようなフローで発生したかを確認する為のスタックトレース情報が表示されます。 しかしながら、スタックトレースは16進のアドレスとsoファイルの組み合わせで表示される為、この…
はじめに Unity2018以降のリフレッシュレートとフレームレートの関係性を簡単にまとめてみました。 尚、この情報はモバイル(Android,iOS)向けに限定したいます。PCや他のプラットフォームではまた事情が違うことに注意して下さい。 ※現在手持ちのMacが故障中…
はじめに Unityでプログラムを記述していると、Unityのバージョンで処理を分岐したいということが良くあります。 そんな時、 #define ディレクティブを使用して処理を分岐さっせてきましたが、実はUnity2019からはAssembly DefinitionにUnity Editor本体や利…
はじめに 「shader_featureで用いてバリアントを分けたものの、Runtimeで実行すると思った通りに表示されないのだが・・・」といった経験はないでしょうか? 開発中に表示されないことに気がつくことが出来ればまだセーフですが、リリースされた後に判明する…
はじめに Legacy Sprite Packerに関して、Unity2020.3のマニュアルには下記のような記載があります。 Please note that Sprite Packer is deprecated for Unity 2020.1 and newer, and will no longer be available as an option from Sprite Packer Modes. …
概要 UnityEditorのPreferences->External Tools->Androidの部分で設定する、JDK,Android SDK,Android NDK,GradleのパスをScriptから取得・設定してみます!。 EditorPrefs これらのパスはEditorPrefsの機能を使用して保存されています。 EditorPrefsの保存…
概要 Unityでは複数のTextureを1枚のTexture(Atlas)に纏めることで、ドローコールを減らし描画パフォーマンスを向上させる効果が期待できます。 このAtlasを作成する為の機能としてLegacy Sprite PackerとUnity2017で追加されたSprite Packerの2種類が存在…
概要 TargetFrameRateとはアプリケーション全体の1フレーム(1ループ)を実行するのにどの位の時間をかけるかという目標時間です。 1フレームがこの時間より早く処理が終了した場合、目標時間が経過する迄待機してから次のフレームを開始します。 アプリケ…
Microsoft.Unity.Analyzersとは Microsoft.Unity.AnalyzersはMicrosoft社が作成したUnity向けC#コードアナライザーです。 元々はVisual Studio 2019に「Visual Studio Tools for Unity」として組み込まれていましたが2020年2月にオープンソースコード化され…
概要 スクリプトデバックとはVisual Studion等のデバッカーを用いて、ユーザーが作成したC#のコードにbreakポイントを貼りステップ実行を行うデバック方法です。 Unity Editorで実行する場合、スクリプトデバックは比較的容易なのですが、Android端末でアプ…