コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【Unity】uGUI で Canvas Renderer の「Cull Transparent Mesh」をオンにすると透明なオブジェクトの描画をスキップできる

概要 例えば uGUI で透明な Image をシーンに配置した場合 画面には何も表示されないですが Overdraw を見てみると、うっすら赤くなっており 描画の処理は走ってしまっていることがわかります (透明な Image を10個重ねてみるとこのようにわかりやすくなり…

【Unity】Unity 2019.2.0a6 新機能 シーン遷移にかかった時間の内訳を Editor.log で閲覧できるようになった

概要 Console ウィンドウを右クリックして 「Open Editor Log」を選択した時に表示される Editor.log で LightmapEditorSettings: switching bake backend from 1 to 0. Unloading 26 Unused Serialized files (Serialized files now loaded: 0) UnloadTime:…

【Unity】モバイルにおけるテクスチャの最大サイズ(2017年9月)

概要 2017年9月時点でほとんどのモバイル端末が 4096 x 4096 のテクスチャをサポートしているらしい iOS:iPhone 4S 以降、iPad 2 以降でサポートされている Android:98.4 % の端末でサポートされている

【Unity】iOS で Architecture を Universal から ARM64 に変更すると Xcode のビルド時間がどれだけ削減できるか調べてみた

はじめに iOS で Architecture を Universal から ARM64 に変更すると Xcode のビルド時間がどれだけ削減できるか調べてみました 検証環境 Unity バージョン:2018.3.7f1 空の Unity プロジェクトで検証 検証結果 Architecture ビルド時間 タスク数 Universa…

【Unity】Android で Target Architectures を減らすとビルド時間がどれだけ削減できるか調べてみた

はじめに Android で Target Architectures を減らすと ビルド時間がどれだけ削減できるか調べてみました 検証環境 Unity バージョン:2018.3.7f1 Scripting Backend:IL2CPP Build System:Gradle 空の Unity プロジェクトで検証 検証結果 Architecture ビ…

【Unity】Android で Target Architectures を減らすとアプリ容量がどれだけ削減できるか調べてみた

はじめに Android で Target Architectures を減らすと アプリ容量がどれだけ削減できるか調べてみました 検証環境 Unity バージョン:2018.3.7f1 Scripting Backend:IL2CPP Build System:Gradle 空の Unity プロジェクトで検証 検証結果 Architecture 容…

【Unity】iOS の Architecture を変更するエディタ拡張

概要 iOS の Player Settings に存在する Architecture は using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { PlayerSettings.SetArchitecture( BuildTargetGroup.iOS, 0 ); } } PlayerSettings.Se…

【Unity】iOS ビルド後に Xcode プロジェクトの「Debug Information Format」に「DWARF」を設定するエディタ拡張

概要 「Debug」以外の項目にも「DWARF」を設定したい場合は 19行目の "Debug" の部分を "Release" や "ReleaseForProfiling" 、 "ReleaseForRunning" などに変更します 「DWARF with dSYM File」を設定したい場合は 21行目の "dwarf" の部分を "dwarf-with-d…

【Unity】iOS ビルド後に Xcode プロジェクトの「Enable Bitcode」をオフにするエディタ拡張

概要 参考サイト様

【Unity】指定したフォルダに含まれているすべてのファイルの依存関係も含めたハッシュ値を計算できるスクリプト

ソースコード(引用) 使用例 指定したフォルダに含まれているいずれかのファイルか、 それらのファイルが依存しているファイルが変更された場合に 違うハッシュ値が取得できるため、ファイルに変更があったかどうかの検知に使用できます 参考サイト様

【Unity】iOS で加速度センサを無効化してパフォーマンスを改善する

概要 iOS で加速度センサを使用しない場合、 Unity メニューの「File > Build Settings...」から 「Player Settings...」を開いて、iOS の Other Settings の中に存在する 「Accelerometer Frequency」を「Disabled」にすることで 少しだけパフォーマンスを…

【Unity】uGUI でドローコールを増やさずにカラーブレンドの方法を変更できる「UI_Color_Blend_example」紹介

はじめに 「UI_Color_Blend_example」を Unity プロダクトに導入することで uGUI でドローコールを増やさずにカラーブレンドの方法を変更できるようになります 使用例 シェーダやマテリアルを用意して使用する場合 SpriteAtlas を使用していてもドローコール…

【おすすめスライド】「【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計」

スライド

【Unity】指定したアセットに依存するすべてのアセットを取得できる「EditorUtility.CollectDependencies」

概要 EditorUtility.CollectDependencies を使用することで 指定したアセットに依存するすべてのアセットを配列で取得できます 例えば上記のような 3D モデルのプレハブに対して using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" …

【Unity】各シーンの Global Illumination(GI)をデフォルトで無効にする方法

概要 Unity メニューの「Edit > Project Settings...」を選択して 「Editor」タブの「Default Behaviour Mode > Mode」を「2D」にする Mode が 2D の場合 Mode が 3D の場合 参考サイト様

【Unity】Sprite Atlas を使用していても Frame Debugger でドローコールがまとめられていない場合

概要 Sprite Atlas を使用している状態で Frame Debugger を見てもドローコールがまとめられていない場合、 Unity の「Project Settings > Editor」の 「Sprite Packer > Mode」が 「Always Enabled」になっているのであれば、 Unity エディタ再生中に Frame…

【Unity】四分木(Quadtree)による空間分割を使用して当たり判定を実装できる「Unity3d-QuadTree-Collision-Detection」紹介

はじめに 「Unity3d-QuadTree-Collision-Detection」を Unity プロジェクトに導入することで 四分木(Quadtree)による空間分割を使用して当たり判定を実装できるようになります 検証 今回は Unity 標準の当たり判定を使用した場合と 四分木による当たり判定…

【Unity】Physics 2D Raycaster の「Max Ray Intersections」を 0 にしていると毎フレーム数バイトの GC Alloc が発生する

概要 Physics 2D Raycaster の「Max Ray Intersections」を 0 にしていると 毎フレーム数バイトの GC Alloc が発生します Physics 2D Raycaster の「Max Ray Intersections」を 1 などにすると発生しなくなります

【Unity】マルチプロセスでアセットバンドルをビルドできるようになりビルド時間を削減できる「Unity-MultiProcess-BuildPipeline」紹介

はじめに 「Unity-MultiProcess-BuildPipeline」を Unity プロジェクトに導入することで マルチプロセスでアセットバンドルをビルドできるようになり ビルド時間を削減できるようになります 使い方 using System.Collections.Generic; using UnityEditor; pu…

【Unity】Mono Heap が大きいほど GC に時間がかかる(メモ)

【Unity】Unity 2018.3 におけるコンパイル時間を検証してみた

概要 Unity 2018.3 におけるコンパイル時間が少し気になったので、 手元にある Unity プロジェクトをいくつかの Unity バージョンで開き、 それぞれのバージョンでコンパイルにどのくらい時間がかかるか比較してみました 検証環境 Windows 10(SSD) Unity 5…

【Unity】新しい Memory Profiler のパッケージが利用可能になった(現在はプレビュー版)

はじめに https://forum.unity.com/threads/new-memory-profiler-preview-package-available-for-unity-2018-3.597271/ 新しい Memory Profiler のパッケージが利用可能になりました 2018/12/14 現在はプレビュー版となっております 導入方法 2018/12/14 現…

【Unity】Unity 2018.3 新機能 ガベージコレクションを無効化できる API が追加された

はじめに Unity 2018.3 からガベージコレクションを無効化できる API が追加されました 使い方 UnityEngine.Scripting 名前空間に存在する GarbageCollector クラスを使用します using UnityEngine.Scripting; ... // ガベージコレクションを有効化 GarbageC…

【Unity】Dictionary のキーに列挙型を使用すると Android の IL2CPP ビルドの時間・APK ファイルのサイズがどのくらい増えるか検証してみた

はじめに Dictionary のキーに int を使用した場合と列挙型を使用した場合で Android の IL2CPP ビルドの時間がどのくらい増えるか、 生成される APK ファイルのサイズがどのくらい増えるかを検証してみました 検証環境 Windows 10(SSD) Unity 2018.2.14f1…

【Unity】IL2CPP のビルド時間を最適化する方法が公式ドキュメントに記載されていたのでメモ

概要 上記の公式ドキュメントで IL2CPP のビルド時間を最適化する方法が紹介されていたため 備忘録として書き残しておきます インクリメンタルビルドを使用する iOS の場合は Build Settings で Build を選択した後に Replace ではなく Append を使用する Pl…

【Unity】Unity 2019.1.0a8 新機能 GC スパイクを避けられる Incremental Garbage Collection が使用できるようになった

概要 Unity メニューの「Edit>Project Settings...」の「Player」タブから 「Use incremental GC (Experimental)」をオンにすることで GC スパイクを避けることができる Incremental Garbage Collection が使用できるようになります

【Unity】UI の最適化についてまとめられている公式ドキュメント

概要

【Unity】Unity 2018.3.0b 新機能「Managed Stripping Level」すべてのプラットフォームでコードサイズを縮小できる

概要 Unity 2018.3.0b において「Managed Stripping Level」が追加されました この機能を使用することで、すべてのプラットフォームで コードサイズを縮小できるようになります Unity メニューの「File>Build Settings...」から「Player Settings...」を選択…

【Unity】非同期読み込みの優先順位を設定できる「AsyncOperation.priority」

概要 var operation = SceneManager.LoadSceneAsync( "Hoge" ); operation.priority = 10; 複数の非同期操作がキューに存在する場合、 優先順位が高いものが最初に実行されます すでに開始した処理は、優先順位を変更しても反映されないため注意が必要です

【Unity】データをバックグラウンドで読み込む時に 1 フレーム内で使える最大時間を変更できる「Application.backgroundLoadingPriority」

概要 https://docs.unity3d.com/ScriptReference/Application-backgroundLoadingPriority.html Application.backgroundLoadingPriority を使用することで Resources.LoadAsync AssetBundle.LoadAssetAsync AssetBundle.LoadAllAssetAsync SceneManager.LoadS…