コガネブログ

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

【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…

【Unity】コンポーネントの実行順をスクリプトから指定できる「DefaultExecutionOrder」

概要 using UnityEngine; [DefaultExecutionOrder( -100 )] public class Example1 : MonoBehaviour { private void Awake() { Debug.Log( nameof( Example1 ) ); } } using UnityEngine; [DefaultExecutionOrder( -200 )] public class Example2 : MonoBeha…

【Unity】RectTransform の「Some values driven by XXXX」の状態を取得する方法

概要 using System.Reflection; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var rectTransform = ( RectTransform ) Selection.activeTransform; var type = typeof( R…

【Unity】F9 で Profiler の Record の開始・終了ができる

概要 F9 を押すと Profiler の Record の開始・終了ができる

【Unity】Profiler のグラフの色を変更できる「Color Blind Mode」

概要 通常の Profiler のグラフの色はこのような感じですが Profiler のタブを右クリックして「Color Blind Mode」を選択すると グラフの色を変更できます

【Unity】リリースノートの RSS

概要 リリースノートの RSS https://unity3d.com/unity/releases.xml LTS のリリースノートの RSS https://unity3d.com/unity/lts-releases.xml 参考サイト様

【Unity】Shift + H で選択中のゲームオブジェクト以外を Scene ビューで非表示にできる

概要 Shift + H を押すと選択中のゲームオブジェクト以外を Scene ビューで非表示にすることができます

【Unity】Script Execution Order の欄にはスクリプトをドラッグできる

概要 Script Execution Order の欄にスクリプトをドラッグすると そのスクリプトを Script Execution Order に追加できます

【Unity】Unity 2019.4 以前でスクリプトから Preset を適用する時にパラメータの除外を指定できる関数

ソースコード using System.Linq; using UnityEditor.Presets; using UnityEngine; public static class PresetUtils { public static void ApplyToWithExclusion ( Preset preset, Object target, params string[] excludedPropertyPaths ) { var selectedP…

【Unity】Profiler の項目に紐付いているオブジェクトを表示する方法

概要 Profiler の「No Details」を「Show Related Objects」に変更することで Profiler の項目に紐付いているオブジェクトを確認できるようになります

【Unity】Vector2 や Vector3 の等値演算子は 0.00001 までの誤差を許容している

概要 公式ドキュメントによると Vector2 や Vector3 の等値演算子は 0.00001 までの誤差を許容しているとのこと Vector2: https://docs.unity3d.com/ScriptReference/Vector2-operator_eq.html Vector3: https://docs.unity3d.com/ScriptReference/Vector3-o…

【Unity】ランタイムで Scenes In Build に登録されているすべてのシーンのパスを取得する方法

概要 public static IEnumerable<string> GetAllScenePathInBuildSettings() { for ( int i = 0; i < SceneManager.sceneCountInBuildSettings; i++ ) { yield return SceneUtility.GetScenePathByBuildIndex( i ); } } 参考サイト様</string>

【Unity】ゲーム実行中に Texture2D を Sprite に変換して使用する方法

ソースコード using UnityEngine; public static class Texture2DExt { public static Sprite ToSprite( this Texture2D self ) { var rect = new Rect( 0, 0, self.width, self.height ); var pivot = Vector2.one * 0.5f; var newSprite = Sprite.Create( …

【Unity】Package Manager で追加したパッケージの .csproj を生成する方法

概要 Unity メニューの「Edit > Preferences」から 「External Tools」の「Generate all .csproj files.」をオンにして ソリューションファイルを再生成する