コガネブログ

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

【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 で現在のエディタの編集モードを…

【Unity】Collider や LineRenderer などの編集が開始した・終了したかどうかを検知するエディタ拡張

概要 using UnityEditor; using UnityEditorInternal; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { EditMode.onEditModeStartDelegate += OnEditModeStartDelegate; EditMode.onEditModeEndDelegate += OnEdit…

【Unity】Tilemap の Tile Palette で選択されているツールをスクリプトから変更する方法

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

【Unity】Tilemap の Tile Palette は内部的には GridPaintPaletteWindow という EditorWindow

概要 Tilemap の Tile Palette は内部的には GridPaintPaletteWindow という EditorWindow で構成されています Unity エディタを開発者モードにすることで確認できます 関連記事