コガネブログ

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

【Unity】Mathf.SmoothDamp で Time.timeScale を無視する方法

概要 var result = Mathf.SmoothDamp ( current: current, target: target, currentVelocity: ref currentVelocity, smoothTime: smoothTime, maxSpeed: maxSpeed, deltaTime: Time.unscaledDeltaTime // ★ ); Mathf.SmoothDamp の第6引数に Time.unscaledDe…

【Unity】TextMesh Pro でハイパーリンクが正常に動作しない場合

概要 Canvas の Render Mode が Screen Space - Overlay の場合は var index = TMP_TextUtilities.FindIntersectingLink( text, position, null ); TMP_TextUtilities.FindIntersectingLink の第3引数に null を設定します Canvas の Render Mode が Screen …

【Unity】【Odin Inspector】interface を Inspector でアタッチできるようにする方法

はじめに Odin Inspector を Unity プロジェクトに導入することで interface を Inspector でアタッチできるようになります 概要 public interface ICharacter { void Log(); } 例えば ICharacter インターフェイスを定義して、 using UnityEngine; public c…

【Unity】ワールド座標を Screen Space - Camera の Canvas 内のローカル座標に変換する関数

ソースコード using UnityEngine; public static class CameraUtils { /// <summary> /// ワールド座標を Screen Space - Camera の Canvas 内のローカル座標に変換します /// </summary> /// <param name="worldCamera">ワールド座標を描画するカメラ</param> /// <param name="canvasCamera">Canvas を描画するカメラ</param> /// <param name="canvasRectTransform">Canvas …</param>

【Unity】ワールド座標を Screen Space - Overlay の Canvas 内のワールド座標に変換する関数

ソースコード using UnityEngine; public static class CameraUtils { /// <summary> /// ワールド座標を Screen Space - Overlay の Canvas 内のワールド座標に変換します /// </summary> /// <param name="worldCamera">ワールド座標を描画するカメラ</param> /// <param name="worldPosition">変換前のワールド座標</param> /// <returns>変換後のワールド座標</returns>…

【Unity】Script 'XXXX' will not be compiled because it exists outside the Assets folder and does not to belong to any assembly definition file.

概要 Script 'XXXX' will not be compiled because it exists outside the Assets folder and does not to belong to any assembly definition file. Packages に存在するスクリプトが Assembly Definition File に属していない場合 上記の警告が出力されま…

【Unity】Console ウィンドウの Collapse や Clear on Play などのオン・オフをスクリプトから変更する方法

ソースコード using System; using System.Reflection; using UnityEditor; public static class ConsoleWindowUtils { public enum ConsoleFlags { Collapse = 1 << 0, ClearOnPlay = 1 << 1, ErrorPause = 1 << 2, Verbose = 1 << 3, StopForAssert = 1 <<…

【Unity】Unity 2019.2 以降なら Tilemap の Tile Palette で選択されているパレットをスクリプトから取得・設定できる

概要 using UnityEditor; using UnityEditor.Tilemaps; using UnityEngine; public static class Example { [MenuItem( "Tools/Log" )] private static void Log() { // 選択中のパレットを取得する Debug.Log( GridPaintingState.palette ); // 選択中のパ…

【Unity】Unity 2019.2 以降なら Tilemap の Tile Palette で選択されているブラシをスクリプトから取得・設定できる

概要 using System; using System.Collections.Generic; using System.Reflection; using UnityEditor; using UnityEditor.Tilemaps; using UnityEngine; // Tile Palette で使用できるすべてのブラシを管理するクラス public static class GridPaletteBrush…

【Unity】Unity 2019.2 以降なら Tilemap の Tile Palette の Active Tilemap をスクリプトから取得・設定できる

概要 using UnityEditor; using UnityEditor.Tilemaps; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { // Active Tilemap が変更された時に呼び出される GridPaintingState.scenePaintTargetChanged += OnChange…

【Unity】文字列補間を使用する場合も ToString を付けたほうが GC Alloc は少なくなる

概要 using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { private void Update() { int num1 = 1; int num2 = 2; // ToString あり var sampler1 = CustomSampler.Create( "ToString あり" ); sampler1.Begin(); var …

【Unity】EditorUtility.RevealInFinder でフォルダを開こうとすると上の階層が開いてしまう

概要 using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { EditorUtility.RevealInFinder( "Assets" ); } } 例えば EditorUtility.RevealInFinder で Assets フォルダを開こうとすると Assets フォ…

【ReSharper】メソッドチェーンを改行した時のインデントの長さを変更する方法

概要 Visual Studio メニューの「RESHARPER > Options」から 「Code Editing > C# > Formatting Style > Tabs, Indents, Alignment」を選択して 「Chained method calls」を オンにするとこうなります オフにするとこのようになります

【Unity】Tilemap オブジェクトが選択されたら Tile Palette の矩形ツールを選択状態にするエディタ拡張

ソースコード using System; using System.Reflection; using UnityEditor; using UnityEditorInternal; using UnityEngine.Tilemaps; public static class GridPaintPaletteWindowUtils { private const BindingFlags BINDING_ATTR = BindingFlags.Static |…

【Unity】現在のエディタの編集モードを取得するエディタ拡張

概要 using UnityEditor; using UnityEditorInternal; using UnityEngine; public static class Example { [MenuItem("Tools/Hoge")] private static void Hoge() { Debug.Log( EditMode.editMode ); } } EditMode.editMode で現在のエディタの編集モードを…