検証内容 約 100 MB の文字列を 100 回 File.WriteAllText する処理を foreach で書いた場合と Parallel.ForEach で書いた場合の速度を検証 検証環境 Unity 2021.2.7f1 Windows IL2CPP ビルド Android IL2CPP ビルド 検証結果(Unity エディタ) 項目 かかっ…
検証内容 約 100 MB の文字列を 100 回 File.WriteAllText する処理を for で書いた場合と Parallel.For で書いた場合の速度を検証 検証環境 Unity 2021.2.7f1 Windows IL2CPP ビルド Android IL2CPP ビルド 検証結果(Unity エディタ) 項目 かかった時間 f…
はじめに 上記のリポジトリで各 LINQ ライブラリのベンチマークを確認できます
はじめに 「StructLinq」を Unity プロジェクトに導入することで ゼロアロケーションの LINQ を使用できるようになります 検証環境 Unity 2021.2.7f1 Windows IL2CPP ビルド 検証結果 using System; using System.Linq; using StructLinq; using UnityEngine…
リポジトリ 使用例 using System.IO; using System.Threading.Tasks; using Kogane.CompleteEventsTracer; using UnityEngine; public sealed class Example : MonoBehaviour { private async void Start() { Debug.Log( "開始" ); var tracer = new Complet…
はじめに 「Cecil Attributes」を Unity プロジェクトに導入することで Attribute を指定するだけでプロパティや関数の呼び出し時にログ出力できるようになります ResetStaticAttribute // デフォルトでは Subsystem Registration のタイミングで // default…
ソースコード using System; using Unity.Profiling; using UnityEngine; public sealed class CheckGCAllocScope : IDisposable { #if ENABLE_RELEASE public void Dispose() { } public static CheckGCAllocScope Create( string name ) { return default;…
はじめに TextMesh Pro の Font Asset Creator の Packing Method を Fast にした場合と Optimize にした場合でどのくらい時間に差が出るか検証 Font Asset 生成時の各種設定は上記の通り 検証に使用されていただいたフォントは上記サイト様で紹介されている…
検証内容 「ラノベPOPフォント」で日本語を含む TextMesh Pro のフォントを作成する場合、 Sampling Point Size を「Auto Sizing」にした場合と「Custom Size」にした場合で Font の Generate が完了するまでにどのくらい時間の差が出るか検証 検証環境 Wind…
検証内容 100 個の string 型のフィールドを持つ 1 億個の クラスのインスタンスを引数に渡す場合 構造体のインスタンスを引数に渡す場合 構造体のインスタンスを参照引数(ref)に渡す場合 構造体のインスタンスを入力参照引数(in)に渡す場合 の速度を比…
検証内容 アセットバンドルが約 3,700 個存在する Unity プロジェクトで検証 検証環境 Windows 10 Unity 2020.3.25f1 クリーンビルドした場合 項目 アセットバンドルのビルドにかかった時間 通常 16分24秒 並列ビルド(スレーブ 2 個) 12分39秒 並列ビルド…
検証内容 たとえば StreamingAssets フォルダに 大量のアセットを格納すると インポートに長い時間がかかってしまいます ゲームをビルドする時にアセットバンドルを StreamingAssets にコピーしてからビルドする場合、 ゲームのビルドのたびに長いインポート…
概要 Unity 2021.2 の Build Settings で設定できる Asset Import Overrides を Unity プロジェクトを開く時のコマンドライン引数で指定したい場合は Unity Hub でプロジェクトの行の右端の三点リーダを押して 「コマンドライン引数を加える」を選択して -ov…
検証内容 テクスチャと 3D モデルが合計約 4,000 個存在する Unity プロジェクトで検証 Library フォルダを削除した状態でプロジェクトを開くのにかかる時間を計測 Android、iOS、Windows のプラットフォームごとでインポート時間に差が出るか検証 並列イン…
検証内容 テクスチャと 3D モデルが合計約 4,000 個存在する Unity プロジェクトで検証 Library フォルダを削除した状態でプロジェクトを開くのにかかる時間を計測 古いバージョンからアップデートした後に ForceReserializeAssets を実行した場合と しなか…
検証内容 テクスチャと 3D モデルが合計約 4,000 個存在する Unity プロジェクトで検証 Library フォルダを削除した状態でプロジェクトを開くのにかかる時間を計測 Unity Accelerator を使う場合と使わない場合でかかった時間を比較 並列インポートの設定は…
検証内容 テクスチャと 3D モデルが合計約 4,000 個存在する Unity プロジェクトで検証 Library フォルダを削除した状態でプロジェクトを開くのにかかる時間を計測 並列インポートが有効な場合と無効な場合でかかった時間を比較 並列インポート有効時の設定…
概要 Unity メニューの「Window > Analysis > Import Activity」を選択するか Project ウィンドウでアセットを右クリックして 「View in Import Activity Window」を選択するか Inspector のタブを右クリックして「Open in Import Activity Window」を選択す…
概要 アセットの Inspector の「Asset PostProcessors」の欄を開くと そのアセットのインポート時に使用された AssetPostprocessor を一覧で確認できます
概要 Unity メニューの「Edit > Project Settings」を開いて 左メニューで「Editor」を選択して「Parallel Import」をオンにすると アセットの並列インポートを有効化できます 記事執筆時点で並列インポートに対応しているアセットは以下のとおりです Textur…
はじめに 100 個のテクスチャが格納されている Unity プロジェクトで [MenuItem( "Tools/Reimport" )] public static void Reimport() { var sw = Stopwatch.StartNew(); AssetDatabase.ImportAsset ( "Assets/Textures", ImportAssetOptions.ForceUpdate | …
はじめに 「Asset Lens」を Unity プロジェクトに導入することで アセットの依存関係を調査できるようになります クイックスタート 「Index Wizard」ウィンドウで「Generate」を押すと 依存関係の調査が始まるのでしばらく待ちます 調査が完了したら依存関係…
はじめに 「UnityProfilerLiteKun」は メモリが許す限り Profile を記録できる簡易プロファイラです 使用例 クイックスタート Unity メニューの「Window > UTJ > UnityProfilerLiteKun」を押して 通常の Profile と同様にビルドしたプレイヤーに接続して レ…
はじめに 「UnityOverDrawKun」を Unity プロジェクトに導入することで Overdraw を計測して解析できるようになります 使用例 クイックスタート 「OverdrawCamera」プレハブをシーンに配置して 「Target Display」を「Display 1」以外に変更し、 「Master Ca…
はじめに Unity では Debug.Log する時にスタックトレースの情報も出力するかどうか設定できる エディタの Project Settings > Player > Other Settings から設定可能 エディタ拡張のスクリプトから PlayerSettings.SetStackTraceLogType で設定可能 ランタ…
概要 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { // スタックトレースあり Application.SetStackTraceLogType( LogType.Log, StackTraceLogType.ScriptOnly ); // スタックトレースなし Application.SetStackTraceL…
はじめに 「Compilation Visualizer for Unity」は アセンブリのコンパイルのプロセスを可視化できるエディタ拡張です 使用例 プロジェクト全体をコンパイルし直した場合 Assembly-CSharp.dll のスクリプトを修正した場合
スライド
概要 Profiler の「No Details」を「Show Related Objects」に変更することで Profiler の項目に紐付いているオブジェクトを確認できるようになります
検証環境 Unity 2019.3.10f1 Android Mono2x Android 8.0.0 表示するスプライト数:100個 検証結果 Mesh Type FPS Full Rect 28 FPS Tight 60 FPS