コガネブログ

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

【Unity】プレハブの編集が簡単になる PrefabUtility.EditPrefabContentsScope

通常 [MenuItem( "Tools/Hoge" )] private static void Hoge() { var assetPath = ""; var prefabRoot = PrefabUtility.LoadPrefabContents( assetPath ); foreach ( var x in prefabRoot.GetComponentsInChildren<SpriteRenderer>() ) { Object.DestroyImmediate( x ); } Pr</spriterenderer>…

【Unity】IPointerClickHandler などで同時押しを無視する方法

概要 using UnityEngine; using UnityEngine.EventSystems; public class Example : MonoBehaviour, IPointerClickHandler { void IPointerClickHandler.OnPointerClick( PointerEventData eventData ) { if ( 0 < eventData.pointerId ) return; Debug.Log(…

【Unity】アセットを複製した時にファイル名の連番が正しく計算されるようにする方法

概要 ファイル名の末尾が数字のアセットを複製すると デフォルトでは上記のようになってしまうが Project Settings の「Editor > Space Before Number in Asset Names」をオフにすると ファイル名の連番が正しく計算されるようになります

【Unity】IL2CPP ビルドでスタックトレースの行番号を確認する方法

概要 「Development Build」と「Script Debugging」をオンにしてビルドする オフの場合 オンの場合 参考サイト様

【Unity】Unity 2022 から Package Manager でパッケージを複数選択して削除や更新ができる

概要 Unity 2022 から Package Manager でパッケージを複数選択して 一括で「Remove」や「Update」ができる 操作 内容 Ctrl + クリック 複数選択 Ctrl + A すべて選択 Shift + クリック 範囲選択 Shift + Up / Down 追加選択

【Unity】Scene ビューで Space キーを押すとオーバーレイの ON / OFF を切り替えられる

概要 Scene ビューで Space キーを押すと オーバーレイの ON / OFF を切り替えられる

【Unity】3D 空間に配置した TextMesh Pro に SpriteMask を適用する方法

概要 TextMesh Pro のマテリアルを選択して Stencil ID を 1、Stencil Comp を 3 にすることで ワールド空間に配置した TextMesh Pro に SpriteMask を適用できます Stencil ID を 0 にすると逆マスクになります 参考サイト様 You can use SpriteMask with T…

【Unity】Scripting Define Symbols にシンボルが定義されていない場合にのみ Assembly Definition を有効化する方法

概要 Define Constraints に入力するシンボルの先頭に ! をつけると そのシンボルが Scripting Define Symbols に定義されていない場合にのみ Assembly Definition が有効化されるようになります 参考サイト様

【Unity】EventSystem.current.IsPointerOverGameObject が検出したゲームオブジェクトを取得する方法

概要 using JetBrains.Annotations; using UnityEngine; using UnityEngine.EventSystems; namespace Kogane { public sealed class CustomStandaloneInputModule : StandaloneInputModule { [CanBeNull] public GameObject GetLastPointerGameObject() { re…

【Unity】Zenn の Unity に関するフィードを購読する方法

概要 https://zenn.dev/topics/unity/feed 上記の URL を RSS リーダに追加する

【Unity】EditorWindow を開いた時に TextField をフォーカスして編集状態にする方法

概要 using UnityEditor; using UnityEngine; public sealed class Example : EditorWindow { private bool m_isInitialized; private string m_name; [MenuItem( "Tools/Hoge" )] public static void Open() { GetWindow<Example>(); } private void OnGUI() { GUI.S</example>…

【Unity】EditorWindow の OnGUI を毎フレーム更新したい場合

概要 using UnityEditor; public sealed class Example : EditorWindow { private void Update() { Repaint(); } } Update で Repaint を呼び出すと OnGUI が毎フレーム更新される

【Unity】Unity プロジェクトのキャッシュを削除するバッチファイルの例

ソースコード @echo off set /P ANSWER="キャッシュを削除しますか (Y/N)?" if /i {%ANSWER%}=={y} (goto :yes) if /i {%ANSWER%}=={yes} (goto :yes) exit :yes rd /s /q Library\ rd /s /q Logs\ rd /s /q obj\ rd /s /q Temp\ del *.csproj del *.sln ec…

【Unity】パッケージの依存関係を確認できるようにする方法

概要 Project Settings を開いて左メニューで「Package Manager」を選択して 「Show Dependencies」をオンにすると Package Manager でパッケージの依存関係を確認できるようになる

【Unity】int や float の配列は Inspector で Ctrl + D で要素を複製できる

概要 using UnityEngine; public class Example : MonoBehaviour { public int[] m_intArray; } int や float の配列は Inspector で Ctrl + D で要素を複製できる string や参照型は Ctrl + D を押しても何も起きない

【Unity】開発中のゲームで不具合が発生した時の手順を録画して保存する方法

はじめに GeForce Experience のインスタントリプレイという機能を使うと 現在から最大 20 分前までの映像や音声を録画して保存することができるため 開発中のゲームで急に不具合が発生した時に どのような手順を踏んで不具合が発生したのかを動画で確認でき…

【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 以降で配列の要素を範囲指定で取得する方法

概要 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var array = new[] { 0, 1, 2, 3, 4 }; // 1,2,3,4 foreach ( var value in array[ 1.. ] ) { Debug.Log( value ); } // 0,1,2,3 foreach ( var value in array[ ..…

【Unity】Preset の Excluded Properties を昇順に並べ替えるエディタ拡張

概要 Preset を右クリックして「Exclude all properties」を押すと プロパティが除外設定に登録されるが順番に規則性がないため 除外設定を解除したいプロパティを探すのが大変だった using System.Linq; using UnityEditor; using UnityEditor.Presets; pub…

【Unity】Unity 2021 以降で配列の末尾の要素を簡単に取得する方法

概要 using System.Linq; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var array = new[] { 1, 2, 3 }; Debug.Log( array[ array.Length - 1 ] ); // 昔ながらの方法 Debug.Log( array.Last() ); // LINQ を使用 Deb…

【Unity】Scene ビューの Transform ツールの線の太さを変える方法

概要 Unity の Preferences を開いて「Scene View > Line Thickness」を変更すると Scene ビューの Transform ツールの線の太さを 変えることができる

【Unity】Profiler を Unity エディタとは別のプロセスで起動する方法

概要 Unity メニューの「Window > Analysis > Profiler (Standalone Process)」を選択して 確認ダイアログで「OK」を押すと Unity エディタとは別のスタンドアローンアプリとして Profiler を起動できます 参考サイト様

【Unity】自作コンポーネントの Inspector の表示名を日本語にする方法

概要 using UnityEngine; [AddComponentMenu( "【ここに日本語の名前】" )] public sealed class Example : MonoBehaviour { } AddComponentMenu で日本語の表示名を指定すると 自作コンポーネントの Inspector の表示名を日本語にできます

【Unity】Unity エディタが重い・Hold on や Unity is busy が長い時に試すこと 33 選

はじめに Unity エディタが重くて操作に時間がかかる時や Hold on・Unity is busy のプログレスバーが消えずに Unity が操作できない時に 自分が試して解決した方法や、 公式フォーラムなどでこうすると解決したと報告があった方法を紹介していきます 目次 …

【Unity】Wi-Fi で Android と接続してデバッグする方法

検証環境 Windows 10 Unity 2021.2.7f1 手順 Android で PC と同じ Wi-Fi に接続しておく Android の設定アプリを開いて「無線とネットワーク > Wi-Fi > 設定」を押して IP アドレスをメモしておく Android を PC に USB 接続する コマンドプロンプトを開い…

【Unity】ビルド前に現在開いているシーンを自動で保存する方法

概要 Preferences の左メニューで「General」を選択して 「Auto-save scenes before building」をオンにすると ビルド前に現在開いているシーンを自動で保存できる Unity 2022.1.0b2 で確認

【Unity】Profiler がキャプチャするフレームの最大数を設定する方法

概要 Unity の Preferences を開いて左メニューで「Analysis > Profiler」を選択して 「Frame Count」を変更することで Profiler がキャプチャするフレームの最大数を設定できる

【Unity】EditorGUILayout.TextArea で範囲内に収まりきらない文字を自動改行する方法

概要 using UnityEditor; using UnityEngine; public sealed class Example : EditorWindow { private string m_text; [MenuItem( "Tools/Open" )] private static void Open() { GetWindow<Example>(); } private void OnGUI() { var style = new GUIStyle( EditorSt</example>…

【Unity】Unity 2021.2 で System.Text.Json を使えるようにする方法

概要 https://www.nuget.org/packages/Microsoft.Bcl.AsyncInterfaces/ https://www.nuget.org/packages/System.Runtime.CompilerServices.Unsafe/ https://www.nuget.org/packages/System.Text.Encodings.Web https://www.nuget.org/packages/System.Text.J…

【Unity】Unity 起動時に自動で Debug Mode にする方法

概要 Unity の Preferences を開いて「General」の 「Code Optimization On Startup」を「Debug」にすると Unity プロジェクトを開く時に自動で Debug Mode で開始します