コガネブログ

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

【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 で開始します

【Unity】無限ループでフリーズした Unity を復帰させる方法

まとめ Windows なら Asset Store の「Emergency Exit」を使うと Ctrl + Shift + Q で無限ループを止められるようになります Visual Studio や JetBrains Rider を使っているなら 以下のいずれかの方法で無限ループを止められます ステートメントの設定で無…

【Unity】Unity エディタで好きなフォントを使用する方法

はじめに 上記のサイト様で紹介されている Unity エディタで好きなフォントを使用する方法を試してみたので 備忘録として自分のブログにも手順を書き残しておきます 手順 【Unity インストール先】\Editor\Data\Resources\fontsettings.txt 上記のファイルを…

【Unity】Particle System のゲームオブジェクトが移動や回転した時にパーティクルを追従させないようにする方法

概要 Particle System のゲームオブジェクトが移動や回転した時に パーティクルを追従させないようにしたい場合は Simulation Space を「World」にします これでパーティクルがゲームオブジェクトの移動や回転に追従しなくなります 参考サイト様

【Unity】SpringJoint2D を LineRenderer で表示するサンプル

ソースコード using UnityEngine; [DisallowMultipleComponent] [ExecuteAlways] [RequireComponent( typeof( SpringJoint2D ) )] [RequireComponent( typeof( LineRenderer ) )] public sealed class Example : MonoBehaviour { private SpringJoint2D m_sp…

【Unity】.csproj の NoWarn に 0169 と 0649 を追加して警告を抑制するエディタ拡張

概要 Unity で「Suppress Common Warnings」をオンにすれば Unity 上では 0169 と 0649 の警告は出なくなるが Rider 上でビルドした場合は警告が出るので以下のエディタ拡張を作って警告を抑制 using System.IO; using System.Text; using System.Xml.Linq; …

【Unity】プレハブモードになった時に Scene ビューの 2D カメラの位置やサイズを変更するエディタ拡張

概要 using Cysharp.Threading.Tasks; using UnityEditor; using UnityEditor.Experimental.SceneManagement; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { PrefabStage.prefabStageOpened += async stage => {…

【Unity】Scene ビューの 2D カメラの位置やサイズを変更するエディタ拡張

概要 using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/FixCameraPivotAndSize" )] public static void FixCameraPivotAndSize() { var sceneView = SceneView.lastActiveSceneView; if ( sceneView == null ) retur…