unityでいってみよう!

unityがチョットワカル位の人のブログ

Unity

Apple's privacy manifestまとめ 2024年3月11日版

目次 目次 UnityEngine Coreライブラリには署名が必要が無い Apple's privacy manifestのマイルストーン Unityのアップグレード UnityEngine Coreライブラリには署名が必要が無い 3月8日(金)のUnity Forumの投稿によると、Appleとの話し合いの結果、Unit…

Vulkan validation layersを有効にしてみよう!

概要 UnityとVulkan validation layersの連携 UnityでVulkan validation layersを有効にする具体的な手順 Androidアプリケーションに引数を指定する UnityPlayerActivityを拡張してコマンドライン引数を指定する adb shellから指定する 概要 Vulkan validati…

Time.maximumDeltaTimeについて解説してみよう!

概要 「Time.maximumDeltaTimeの値を小さくしたのですが、処理落ちが改善しないのは何故ですか?」 という質問が定期的に寄せられます。 パフォーマンスに影響を与えるパラメーターという点に関してはあながち間違ってはいないのですが、1フレームにかかる…

FixedUpdateが実行されないフレームがある原因について考えてみよう!

概要 「FixedUpdate()が実行されないフレームがあるのですが、何故ですか?」 この質問が定期的に発生するので、この問題について解説します。 結論 フレームレートとTime.fixedDeltaTimeが一致していない為に発生します。 解説 UnityはPlayerLoopの先頭で下…

WebGL Playerのマルチスレッド対応状況を調べてみよう!

概要 WebGLPlayerでマルチスレッドを有効にする為に下記の条件を全て満たす必要があります。 PlayerSettings.WebGL.threadsSupportをtrueに設定する WebGLPlayerを出力するが実行するブラウザー側も WebAssembly threadsに対応している マルチスレッドに対応…

Unity2022以降でWebGLのMemorySizeを指定してみよう!

概要 以前、Unity2019以降向けの記事としてWebGLのMemorySizeの指定方法を投稿したのですが、Unity2022では設定方法が変更されていたので、改めてUnity2022以降向けの設定方法を記載します。 unityletsgo.hatenablog.com 設定方法 Player Settings > Publisi…

WebGL向けにビルドしたコンテンツをローカルPC上で実行してみよう!

概要 WebGLプラットフォーム向けにビルド済みのコンテンツを実行する(index.htmlをダブルクリックする)と以下のエラーが表示され、実行できません。 Failed to download file XXX.data.gz. Loading web pages via a file:// URL without a web server is not…

Unity2019以降でWebGLのMemorySizeを指定してみよう!

概要 Unity2018まではPlayerSettingsからMemorySizeを設定出来たのですが、Unity2019以降では項目が無くなりました。 そこでUnity2019以降でMemorySizeを指定するにはどうしたら良いのかというお話しです。 r なお、Unity2022以降に関しては設定方法が大きく…

ComponentをスクリプトからResetしてみよう!

概要 Inspectorから各ComponentのコンテキストメニューにあるResetを実行することで、Componentの値を初期値にリセットすることが出来ますが、それをスクリプトから実行したいといお話しです。 結論 UnityEditor.Unsupported.SmartReset(UnityEngine.Object …

Object.FindObjectsByTypeをつかってみよう!

まとめ Object.FindObjectsOfType(Type type)の代わりにObject.FindObjectsByType(Type type, FindObjectsSortMode sortMode)を使用すると処理負荷が軽減します。 Object.FindObjectsOfType (type)としている箇所をObject.FindObjectsByType(type, FindObjec…

AssetBundleのモヤモヤを調べてみよう!

はじめに AssetBundleの処理の流れがモヤモヤしていたので少し調べてみました。 調査を行ったUnityのバージョンはUnity2021.3.13f1です。他のバージョンではここで記載した内容と異なっている可能性があります。 また、自分の調査に不備があり間違っている可…

セーフエリアとカットアウトについて解説してみよう!

概要 iPhoneX以降ディスプレイ内に内蔵カメラ等が組み込まれたことにより、画面上に表示されない領域(いわゆるノッチ)というものが現れました。一方、Androidプラットフォームでもノッチが組み込まれたデバイスがリリースされるようになり、Androidではノ…

AssetBundleをダンプしてみよう!

目的 AssetBundleをダンプしてAssetBundleの構造を理解します。 検証環境 Unity2021.3l7f1で検証を行いましたが、Unity2017以降であれば特に変更は無いと思います。 Tools AssetBundleをダンプする為にはWebExtract・binary2textの2種類のToolを使用します…

UnityEditorからadbコマンドを実行してみよう!

概要 Android SDKに含まれるadbコマンドをUnityEditor上から実行する方法に関するお話しです。 結論 スクリプトリファレンスには記載が無いですが、実はUnityEditor.Android配下にADBクラスが存在しているのでそれを使えば簡単にUnityEditor上からadbコマン…

BuildAssetBundleOptionsを解説してみよう!

概要 AssetBundleのビルドオプションであるBuildAssetBundleOptionsに関しての解説です。 スクリプトリファレンス読めば判ることから何を言っているかわからんことまで解説しています。 尚、Unity2021.3時点での内容で記載しています。 AssetBundleのファイ…

Androidデバイス上で直接システム トレースを実行してみよう!

概要 Androidネイティブでのプロファイリングといえばsystraceですが、Android 9(APIレベル28)以降のデバイスであれば、デバイス上から直接システムトレースの記録を行うことが可能です。 今回はデバイス上からシステム トレースを行う方法を説明します。 設…

Shader Cacheを削除してみよう!

Shader Cacheとは? OpenEL GSのデバイスでは、Shader(Snipet)はRuntime上(デバイスで実行されるアプリケーション内)でGPU Programにコンパイルされます。このコンパイルは非常に処理負荷が高い為、コンパイルされたGPU ProgrameをCacheして再利用しようとい…

【Android】Gradle Template変数一覧を作ってみよう!

概要 Androidプラットフォームでビルドを行う際、Gradle Templateをベースとしてbuild.gradleが生成されます。 これらに関しては、マニュアルで説明はされていますが、Template変数はマニュアルに記載されていないものが多々あります。そこで、マニュアルを…

TextAsset.textプロパティの実装を比較してみよう!(Unity2019vsUnity2020)

概要 Unity2020へバージョンアップしてから、TextAssetのtextプロパティの処理負荷が上がっている気がしたので、Unityのソースコードを確認したらプロパティへアクセスする毎にbytesデータを処理するように変更されていたというお話しです。 Unityのソースコ…

SDKMAN!でgradleの任意のバージョンをインストールしてみよう!

はじめに UnityはAndroid Playerのビルドにgradleを使用しています。 Unity Editor上でバイナリの生成迄行う場合は、気にする必要がないのですが、インクリメンタルビルドを行う場合、Unityが内部で使用しているgradleとコマンドライン(Terminal)で使用するg…

Android Logcatからsymbolicateしてみよう!

はじめに アプリケーションがクラッシュした時、Logcatにはクラッシュがどのようなフローで発生したかを確認する為のスタックトレース情報が表示されます。 しかしながら、スタックトレースは16進のアドレスとsoファイルの組み合わせで表示される為、この…

【2021年版】リフレッシュレートとフレームレートの関係性を確認してみよう!

はじめに Unity2018以降のリフレッシュレートとフレームレートの関係性を簡単にまとめてみました。 尚、この情報はモバイル(Android,iOS)向けに限定したいます。PCや他のプラットフォームではまた事情が違うことに注意して下さい。 ※現在手持ちのMacが故障中…

Assembly Definitionを利用してUnityのバージョンを判定してみよう!

はじめに Unityでプログラムを記述していると、Unityのバージョンで処理を分岐したいということが良くあります。 そんな時、 #define ディレクティブを使用して処理を分岐さっせてきましたが、実はUnity2019からはAssembly DefinitionにUnity Editor本体や利…

Runtimeで不足しているShaderバリアントをEditorから取得してみよう!

はじめに 「shader_featureで用いてバリアントを分けたものの、Runtimeで実行すると思った通りに表示されないのだが・・・」といった経験はないでしょうか? 開発中に表示されないことに気がつくことが出来ればまだセーフですが、リリースされた後に判明する…

Unity2020でのLegacy Sprite Packerについて

はじめに 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. …

Android SDK,NDK,JDKとGradleへのパスをScriptから取得してみよう!

概要 UnityEditorのPreferences->External Tools->Androidの部分で設定する、JDK,Android SDK,Android NDK,GradleのパスをScriptから取得・設定してみます!。 EditorPrefs これらのパスはEditorPrefsの機能を使用して保存されています。 EditorPrefsの保存…

SpriteAtlasとAssetBundleについて検証してみよう!

概要 Unityでは複数のTextureを1枚のTexture(Atlas)に纏めることで、ドローコールを減らし描画パフォーマンスを向上させる効果が期待できます。 このAtlasを作成する為の機能としてLegacy Sprite PackerとUnity2017で追加されたSprite Packerの2種類が存在…

【2021年度版】UnityのTargetFrameRateについて

概要 TargetFrameRateとはアプリケーション全体の1フレーム(1ループ)を実行するのにどの位の時間をかけるかという目標時間です。 1フレームがこの時間より早く処理が終了した場合、目標時間が経過する迄待機してから次のフレームを開始します。 アプリケ…

Microsoft.Unity.Analyzersを使ってみよう! Visual Studio Code編

Microsoft.Unity.Analyzersとは Microsoft.Unity.AnalyzersはMicrosoft社が作成したUnity向けC#コードアナライザーです。 元々はVisual Studio 2019に「Visual Studio Tools for Unity」として組み込まれていましたが2020年2月にオープンソースコード化され…

【2021年度版】Android端末上で実行するアプリケーションをスクリプトデッバクする方法

概要 スクリプトデバックとはVisual Studion等のデバッカーを用いて、ユーザーが作成したC#のコードにbreakポイントを貼りステップ実行を行うデバック方法です。 Unity Editorで実行する場合、スクリプトデバックは比較的容易なのですが、Android端末でアプ…