コガネブログ

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

【Unity】Rider 2024.3 なら IL2CPP ビルドのデバッグ機能で Scene の Hierarchy の情報を見られる

検証環境 Unity 6000.0.40f1 JetBrains Rider Editor 3.0.34 JetBrains Rider 2024.3.6 概要 Unity の Package Manager で 「JetBrains Rider Editor」を最新版にアップデートすると、 JetBrains Rider 2024.3 で追加された IL2CPP Debug support が使えるよ…

【Unity】Unity 6 から Scene ビューで Ctrl + 右クリックすると重なっているオブジェクトを選択できる

概要 Unity 6 から Scene ビューで Ctrl + 右クリックすると マウスカーソルの位置に重なっているオブジェクトがリストで表示され、 そこから任意のオブジェクトを選択できるようになった。

【Unity】MenuItem に secondaryPriority を渡して表示順を細かく調整できる

概要 using UnityEditor; internal static class Example { [MenuItem( "Tools/C", priority = 1 )] private static void C() { } [MenuItem( "Tools/B", priority = 1 )] private static void B() { } [MenuItem( "Tools/A", priority = 1 )] private stati…

【Unity】CompareTag は string よりも TagHandle を使う方が高速

概要 using UnityEngine; internal sealed class Player : MonoBehaviour { private static TagHandle? m_enemyTagHandle; private void OnTriggerEnter2D( Collider2D other ) { m_enemyTagHandle ??= TagHandle.GetExistingTag( "Enemy" ); if ( other.Com…

【Unity】AndroidApplication クラスから unityPlayer や currentActivity を取得する方法

概要 Unity 6000.0.7f1 で追加された AndroidApplication クラスを使用すると unityPlayer や currentActivity を取得できます。 これまで // 機内モードかどうかを取得する例 using var unityPlayer = new AndroidJavaClass( "com.unity3d.player.UnityPlay…

【Unity】2022.3.45f1 で JetBrains.Annotations.MustDisposeResource が使えるようになった

概要 破棄していないインスタンスがわかるようになる。 参考サイト様

【Unity】2022.2 新機能 - ログのスタックトレースから関数を除外できるようになった

概要 using UnityEngine; public class Example : MonoBehaviour { private void Awake() => Log1(); [HideInCallstack] private void Log1() => Log2(); [HideInCallstack] private void Log2() => Log3(); [HideInCallstack] private void Log3() => Log4(…

【Unity】Unity 2023.1 新機能 - Gizmos.DrawLineList・Gizmos.DrawLineStrip が追加された

これまで using UnityEngine; public sealed class Example : MonoBehaviour { private void OnDrawGizmos() { Gizmos.DrawLine( new( 0, 0 ), new( 1, 0 ) ); Gizmos.DrawLine( new( 1, 0 ), new( 1, 1 ) ); Gizmos.DrawLine( new( 1, 1 ), new( 0, 1 ) ); …

【Unity】Unity 2023.1 新機能 - スプライトに ScriptableObject を設定できるようになった

概要 using System.Linq; using UnityEngine; public sealed class Example : MonoBehaviour { [SerializeField] private Sprite m_sprite; [SerializeField] private SpriteData m_spriteData; // ScriptableObject private void Start() { // スプライトに…

【Unity】Unity 2022 から PolygonCollider2D などでポリゴン数を減らせるようになった

概要 Unity 2022 から PolygonCollider2D などで Use Delaunay Mesh をオンにすると ポリゴン数を減らせるようになった (左がオフ、右がオン) 参考サイト様

【Unity】Asset Import Overrides を設定した時のプロジェクトの起動時間を検証

はじめに Unity Hub でプロジェクトを開く時に コマンドライン引数で Asset Import Overrides を設定した際に プロジェクトの起動時間がどのくらい変化するかを検証してみた 検証環境 Windows 10 Unity 2021.3.1f1 Unity Accelerator 未使用 Parallel Import…

【Unity】IL2CPP Code Generation を Faster (smaller) builds にするとビルドが速くなる

はじめに IL2CPP Code Generation を「Faster runtime」にした場合と 「Faster (smaller) builds」にした場合でビルド時間にどのような差が出るか検証してみた 検証環境 Windows 10 Unity 2021.3.1f1 WebGL ビルド 検証結果 ビルド回数 Faster runtime Faste…

【Unity】WebGL ビルドで Code Optimization を Speed から Size にしたらビルドが速くなった

はじめに WebGL ビルドで Code Optimization を「Speed」にした場合と 「Size」にした場合でビルド時間と成果物のサイズにどのような差が出るか検証してみた 検証環境 Windows 10 Unity 2021.3.1f1 WebGL ビルド ビルド時間 ビルド回数 Speed Size 1 回目 5…

【Unity】Unity Search でアセットの依存関係をグラフにして確認できる

はじめに Unity Search の公式の拡張機能を導入すると アセットの依存関係をグラフで可視化できるようになります 検証環境 Unity 2021.3.1f1 導入方法 上記の記事を参考にしてください 使い方 Unity メニューの「Window > Search > Dependency Graph Viewer…

【Unity】Unity Search ですべてのアセットの依存関係を簡単かつ高速に確認できる

はじめに Unity Search の公式の拡張機能を導入すると アセットの依存関係を簡単かつ高速に確認できます https://github.com/Unity-Technologies/com.unity.search.extensions https://github.com/Unity-Technologies/com.unity.search.extensions/wiki/depe…

【Unity】Unity 2022 から IL2CPP Code Generation の設定場所が変わった

概要 Unity 2021 では IL2CPP Code Generation は Build Settings で設定できたが Unity 2022 では Project Settings で設定するように変化した using UnityEditor; using UnityEditor.Build; public class Example { [MenuItem( "Tools/Hoge" )] public sta…

【Unity】並列インポートを有効にするとプロジェクトの起動やアセットのインポートが速くなる

はじめに Project Settings の「Editor > Parallel Import」を有効にした場合と無効にした場合で プロジェクトの起動時間がどのくらい変化するか検証してみた 検証環境 Windows 10 Unity 2021.3.1f1 Library フォルダを削除した状態で起動時間を検証 検証結…

【Unity】Unity 2021 から標準で使用できるようになったオブジェクトプールの使用例

スクリプト 上記のスクリプトをシーンのゲームオブジェクトにアタッチして実行すると オブジェクトプールの動作を確認できます 実行例 プールにオブジェクトが不足している場合は新規で生成されます プールに非アクティブなオブジェクトが存在する場合は 新…

【Unity】Unity Hub 3 に独自のプロジェクトテンプレートを追加する方法 Unity 2021 対応版

はじめに この記事では Unity Hub 3 で Unity プロジェクトを新規作成する時に 独自のプロジェクトテンプレートを選択できるようにする方法を紹介していきます 環境 Windows 10 Unity 2021.3.1f1 Unity Hub 3.1.2 手順 【Unity のインストール先】\Editor\Da…

【Unity】Unity 2021.2 から MonoBehaviour や ScriptableObject に簡単にアイコンを設定できる

概要 using UnityEngine; [Icon( "Assets/Icons/animal_inu.png" )] public class Example : MonoBehaviour { } Unity 2021.2 から IconAttribute を使うことで MonoBehaviour や ScriptableObject に簡単にアイコンを設定できるようになった

【Unity】Unity 2021.2 から Inspector で参照を設定する時に Object Picker ではなく Unity Search を使用できる

通常 using UnityEngine; public class Example : MonoBehaviour { public Object m_target; } SearchContext using UnityEngine; using UnityEngine.Search; public class Example : MonoBehaviour { [SearchContext( "" )] public Object m_target; } Sear…

【Unity】Unity 2021.2 からLINQ で ToHashSet・SkipLast・TakeLast が標準で使えるようになった

概要 Unity 2021.2 から LINQ で ToHashSet・SkipLast・TakeLast が標準で使えるようになった (もしかしたら Unity 2021.1 から使えるかも?) using System.Linq; using UnityEngine; public class Example : MonoBehaviour { private void Start() { var …

【Unity】Unity 2021.2 から Dictionary で GetValueOrDefault などの拡張メソッドが標準で使えるようになった

概要 Unity 2021.2 から Dictionary の 3 つの拡張メソッドが標準で使えるようになった (もしかしたら Unity 2021.1 から使えるかも?) GetValueOrDefault Remove TryAdd using System.Collections.Generic; using UnityEngine; public class Example : Mo…

【Unity】Unity 2021.2 の Build Settings で設定できる Asset Import Overrides をコマンドライン引数から指定する方法

概要 Unity 2021.2 の Build Settings で設定できる Asset Import Overrides を Unity プロジェクトを開く時のコマンドライン引数で指定したい場合は Unity Hub でプロジェクトの行の右端の三点リーダを押して 「コマンドライン引数を加える」を選択して -ov…

【Unity】Unity 2021.2 で Unity Accelerator を使うとインポートがどれだけ速くなるか

検証内容 テクスチャと 3D モデルが合計約 4,000 個存在する Unity プロジェクトで検証 Library フォルダを削除した状態でプロジェクトを開くのにかかる時間を計測 Unity Accelerator を使う場合と使わない場合でかかった時間を比較 並列インポートの設定は…

【Unity】Unity 2021.2 で並列インポートを使うとインポートがどれだけ速くなるか

検証内容 テクスチャと 3D モデルが合計約 4,000 個存在する Unity プロジェクトで検証 Library フォルダを削除した状態でプロジェクトを開くのにかかる時間を計測 並列インポートが有効な場合と無効な場合でかかった時間を比較 並列インポート有効時の設定…

【Unity】Unity 2020 から便利になった Preset Manager を使ってみる

はじめに Unity 2020 からは Preset や Preset Manager が便利になりました アセットの Preset の場合は、どのフォルダのアセットに どの Preset を反映するか設定できるようになった Preset の一部のパラメータのみを反映できるようになった この記事では P…

【Unity】Unity 2021.1 新機能 - コンパイル開始時に Console のログをクリアできるオプションが追加された

概要 Unity 2021.1 から、Console の「Clear > Clear on Recompile」をオンにすると コンパイル開始時に Console のログをクリアできるようになった

【Unity】Unity 2021.1 新機能 - エディタのウィンドウのタブをダブルクリックすると最大化できる

概要 Unity 2021.1 から、エディタのウィンドウのタブをダブルクリックすると 最大化・最小化を切り替えられるようになった

【Unity】Unity 新機能 - スクリプトから SetPass Calls や Draw Calls を参照できるようになった

概要 using System.Text; using Unity.Profiling; using UnityEngine; public class Example : MonoBehaviour { private string m_statsText; private ProfilerRecorder m_setPassCallsRecorder; private ProfilerRecorder m_drawCallsRecorder; private Pro…