コガネブログ

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

【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 が長い時に試すこと 30 選

はじめに 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…

【Unity】アセットバンドルに含まれている内容を確認する方法

概要 【Unity のインストール先】\Editor\Data\Tools\ 上記のフォルダに存在する「WebExtract.exe」を使用して WebExtract.exe 【アセットバンドルのパス】 上記のコマンドを実行します すると 【アセットバンドル名】_data というフォルダが作成されるので …

【Unity】C# 8.0 language feature

概要 switch 式などの C# 8.0 の機能を使おうとした時に 「C# 8.0 language feature」というエラーが表示される場合は Visual Studio 2017 を使用している可能性があります その場合は Visual Studio 2019 を使うとエラーが表示されなくなります

【Unity】Visual Stdio でスクリプトを BOM 付き UTF-8 で保存する方法

概要 [*.cs] charset=utf-8-bom Unity プロジェクトのルートフォルダに「.editorconfig」というファイルを作成して 上記のコードを記述して保存する 次回からスクリプトを保存した時に BOM 付き UTF-8 で保存されます

【Unity】エディタ上でサスペンドレジュームの動作確認をする方法

概要 Project Settings で「Player」の「Run In Background」をオフにした状態で Unity エディタにフォーカスを合わせたり外したりすれば using UnityEngine; public sealed class Example : MonoBehaviour { private void OnApplicationPause( bool pauseSt…

【Unity】エディタの UI のサイズを拡大する方法

概要 Unity メニューの「Edit > Preferences...」を押して 「UI Scaling」を選択して「Use default desktop setting」をオフにして 「Use custom scaling value」で任意の文字サイズを選択して Unity エディタを再起動すると UI のサイズを拡大できます(画…

【Unity】Library フォルダの削除に時間がかかる場合

概要 del /f /q /s Library > null rd /q /s Library コマンドプロンプトから上記のコマンドを実行すると早く消せるかも? 参考サイト様

【Xcode】xcodebuild: error: Unknown build action

概要 command not found xcodebuild: error: Unknown build action xcodebuild 時に上記のエラーが発生する状況に遭遇した xcodebuild を実行する .sh の改行コードは「CRLF」になっていることが原因だった .sh の改行コードを「LF」で保存したら正常に動作…

【Unity】関数の呼び出し元の情報を取得する方法

概要 using System.Runtime.CompilerServices; using UnityEngine; public sealed class Example : MonoBehaviour { private void Start() { Test( "ピカチュウ" ); } private void Test ( string message, [CallerMemberName] string memberName = "", [Cal…

【Unity】Unity の再生を止めた時に各イベントが呼び出される順番

順番 EditorApplication.playModeStateChanged の PlayModeStateChange.ExitingPlayMode MonoBehaviour.OnApplicationQuit Application.quitting MonoBehaviour.OnDestroy EditorApplication.playModeStateChanged の PlayModeStateChange.EnteredEditMode …

【Unity】CS0169 と CS0649 の警告を無効化する方法

概要 Unity プロジェクトに「csc.rsp」という名前のファイルを作成して -nowarn:0169 -nowarn:0649 「csc.rsp」ファイルに上記の記述を入力して保存することで CS0169 と CS0649 の警告を無効化できます using UnityEngine; public class Example : MonoBeha…