コガネブログ

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

【Unity】空のゲームオブジェクトのプレハブのサイズは 1KB でデフォルトの Particle System のプレハブのサイズは 113KB

概要 項目 サイズ ファイル行数 空のゲームオブジェクトのプレハブ 1KB 32行 デフォルトの Cube プレハブ 3KB 94行 デフォルトの Particle System のプレハブ 113KB 4755行 ファイルの中身 空のゲームオブジェクトのプレハブ デフォルトの Particle System …

【Unity】エディタ拡張で Windows のメッセージボックスを表示する方法

概要 C:\Windows\Microsoft.NET\Framework64\vX.X フォルダ内の System.Windows.Forms.dll を Unity プロジェクトの Editor フォルダに追加して using System.Windows.Forms; using UnityEngine; public static class Example { [UnityEditor.MenuItem( "Too…

【Unity】ダミーテクスチャを作成するエディタ拡張

概要

【Unity】アセットパスと GUID の変換ができるエディタ拡張

概要

【Unity】ゲームオブジェクトが破棄される時に自動で IDisposable.Dispose を呼び出す拡張メソッド

ソースコード 使用例 using System; using UnityEngine; public class Character : IDisposable { public void Dispose() { Debug.Log( "ピカチュウ" ); } } public class Example : MonoBehaviour { private void Start() { var character = new Character(…

【Unity】ZString の Utf16ValueStringBuilder で ZString.Join を使いやすくする拡張メソッド

ソースコード using Cysharp.Text; using System; using System.Collections.Generic; public static class ZStringExt { public static void AppendLine<T> ( ref this Utf16ValueStringBuilder self, char separator, IEnumerable<T> values ) { self.AppendLine</t></t>…

【Unity】IDisposable の破棄漏れを見つけるクラス

ソースコード Dispose が呼び出されずにインスタンスが破棄されると デストラクタのタイミングでエラーログを出力する 使用例 using UnityEngine; // IDisposable を直接実装するのではなく、 // CheckDisposable を継承するようにする public sealed class …

【Unity】Unity プロジェクトの初回起動時かどうかを確認するクラス

ソースコード 使用例 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { private static readonly EditorFirstBootChecker CHECKER = new EditorFirstBootChecker( "Hoge" ); static Example() { if ( CHECKER.IsFir…

【Unity】EditorUtility.ClearProgressBar の呼び出し漏れを防ぐためのクラス

ソースコード 使用例 using System.Collections; using Unity.EditorCoroutines.Editor; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { EditorCoroutineUtility.StartCoro…

【Unity】画面をランダムにクリックして UI をテストできるスクリプト

ソースコード 使い方 ゲームオブジェクトに上記のスクリプトをアタッチすると 毎フレーム画面をランダムにクリックします DontDestroyOnLoad が適用されたゲームオブジェクトにアタッチすると そのゲームオブジェクトが破棄されるまで画面をランダムにクリッ…

【Rider】「Save > This computer」で保存した設定ファイル(GlobalSettingsStorage.DotSettings)の保存場所

概要 C:\Users\【ユーザー名】\.RiderXXXX.X\config\resharper-host 参考サイト様

【ReSharper】「Save To > This computer」で保存した設定ファイル(GlobalSettingsStorage.DotSettings)の保存場所

概要 C:\Users\【ユーザー名】\AppData\Roaming\JetBrains\Shared\vAny 参考サイト様

【ReSharper】Unity で Color 構造体を記述する時に System.Drawing.Color のコード補完を非表示にする方法

概要 Unity で Color 構造体を記述する時にコード補完に System.Drawing.Color が表示されることが煩わしい場合は Visual Studio メニューの「RESHARPER > Options...」から 「Code Inspection > Settings > Auto Import」を選択し、リストに 「System.Drawi…

【ReSharper】Unity で Debug クラスを記述する時に System.Diagnostics.Debug のコード補完を非表示にする方法

概要 Unity で Debug クラスを記述する時にコード補完に System.Diagnostics.Debug が表示されることが煩わしい場合は Visual Studio メニューの「RESHARPER > Options...」から 「Code Inspection > Settings > Auto Import」を選択し、リストに 「System.D…

【ReSharper】Unity で Image クラスを記述する時に System.Net.Mime.MediaTypeNames.Image と UnityEngine.UIElements.Image のコード補完を非表示にする方法

概要 Unity で Image クラスを記述する時にコード補完に System.Net.Mime.MediaTypeNames.Image UnityEngine.UIElements.Image が表示されることが煩わしい場合は Visual Studio メニューの「RESHARPER > Options...」から 「Code Inspection > Settings > A…

【Unity】Unity 2019.3 新機能 - 描画間隔を設定できる「OnDemandRendering.renderFrameInterval」

概要 例えば、このように描画されるシーンで OnDemandRendering.renderFrameInterval = 30; 上記のコードを記述すると 30 フレームごとにゲーム画面の描画が更新されるようになります これまでも Application.targetFrameRate を使用すれば同じようなことが…

【Unity】Image の Use Sprite Mesh をデフォルトでオンにする方法

概要 Image の Use Sprite Mesh をオンにした状態で 赤枠のアイコンを押して Select Preset ウィンドウで「Save current to...」ボタンを押して ダイアログが表示されたらプリセットを保存するフォルダと ファイル名を設定して「保存」を押して Project ビュ…

【Unity】Canvas Scaler のデフォルト値をプリセットで統一する

概要 Canvas Scaler の UI Scale Mode や Reference Resolution を設定した状態で 赤枠のアイコンを押して Select Preset ウィンドウで「Save current to...」ボタンを押して ダイアログが表示されたらプリセットを保存するフォルダと ファイル名を設定して…

【Unity】Canvas Renderer の Cull Transparent Mesh をデフォルトでオンにする方法

概要 Canvas Renderer の赤枠のアイコンを押して Select Preset ウィンドウで「Save current to...」ボタンを押して ダイアログが表示されたらプリセットを保存するフォルダと ファイル名を設定して「保存」を押して Project ビューで作成されたプリセットを…

【Unity】uGUI のオブジェクト作成時に Raycast Target をデフォルトでオフにする方法

概要 例えば uGUI の Image の Raycast Target をデフォルトでオフにしたい場合は Image コンポーネントの赤枠のアイコンを押して Select Preset ウィンドウで「Save current to...」ボタンを押して New Preset ダイアログで保存するフォルダとファイル名を…

【C#】Conditional 属性でシンボルが定義されている場合に関数を無効化する方法

概要 using UnityEngine; public class Example : MonoBehaviour { private void Update() { Log( "ピカチュウ" ); } #if DISABLE_DEBUG_LOG [System.Diagnostics.Conditional( "DUMMY" )] #endif private void Log( string message ) { Debug.Log( message …

【Unity】ログ出力にタグを付与できる独自クラス

スクリプト 使用例 using UnityEngine; public class Example : MonoBehaviour { private readonly CustomLogger m_logger = CustomLogger.Create( "タイトル" ); private void Awake() { m_logger.Log( "Log" ); m_logger.Log( "Log", gameObject ); m_logg…

【Unity】Unityプロ向けの情報がまとめられているサイト「Unity for Pro」

リンク

【Unity】物理演算を無効化する方法

概要 using UnityEngine; public class Example : MonoBehaviour { private void Update() { Physics.autoSimulation = false; Physics2D.autoSimulation = false; } } 物理演算を無効化する場合は 3D の場合は Physics.autoSimulation に false を、 2D の…

【Unity】Unity プロジェクトの初回起動時にのみ何かをするエディタ拡張

概要 using System.IO; using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { private const string PATH = "Library/Example"; static Example() { if ( File.Exists( PATH ) ) { Debug.Log( "2回目以降の起動" ); ret…

【Unity】テスト用のシーンは Scenes In Build のリストの末尾に追加されるようにするエディタ拡張

概要 using System.Linq; using UnityEditor; [InitializeOnLoad] public static class Example { static Example() { EditorBuildSettings.sceneListChanged += OnChanged; } private static void OnChanged() { var scenes = EditorBuildSettings.scenes; …

【Fork】git クライアントの Fork でコミット履歴にプロフィール画像を表示する方法

概要 Fork メニューの「File > Preferences...」から 「Git」タブの「Change the avatar at gravatar.com」のリンクを選択して 表示された上記のサイトでアカウントを作成して アカウント設定の画面にプロフィール画像をアップロードする そして Fork を再起…

【Unity】DOTween で 対象のゲームオブジェクトが破棄されたら Tween も破棄する方法

概要 MissingReferenceException: The object of type 'XXXX' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. DOTween を使っているシーンで他のシーン…

【Rider】string.Format のように扱う必要があること明示する StringFormatMethod 属性

概要 例えば上記のようなコードで StringFormatMethod 属性を適用すると 正しく書式が指定されていない場合に警告が表示されるようになります このように、StringFormatMethod 属性を適用することで string.Format のように扱う必要があること明示できます …

【Rider】戻り値が使用されていない場合に警告を表示できる Pure 属性

概要 例えば上記のようなコードで Pure 属性を適用すると その関数で受け取った値を使用していない場合に警告が表示されるようになります 参考サイト様