コガネブログ

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

【Unity】Tilemap の Inspector に Compress Bounds のボタンを追加するエディタ拡張

ソースコード using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.Tilemaps; [CustomEditor( typeof( Tilemap ) )] public sealed class TilemapEditor : Editor { public override void OnInspectorGUI() { base…

【Unity】Tilemap のすべてのタイルを上下左右にずらすボタンを Scene ビューに表示するエディタ拡張

ソースコード using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.Tilemaps; [InitializeOnLoad] internal static class TilemapShifter { private class TileInfo { public readonly Vector3Int m_position; publ…

【Unity】Tilemap のすべてのタイルを上下左右にずらす EditorWindow のエディタ拡張

ソースコード using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.Tilemaps; [InitializeOnLoad] internal static class TilemapShifter { private class TileInfo { public readonly Vector3Int m_position; publ…

【Unity】Tilemap のすべてのタイルをカーソルキーで上下左右にずらすことができるエディタ拡張

ソースコード using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.Tilemaps; [InitializeOnLoad] internal static class TilemapShifter { private class TileInfo { public readonly Vector3Int m_position; publ…

【Unity】Tilemap からすべてのタイルの情報を参照するサンプル

ソースコード var tilemap = GameObject.FindObjectOfType<Tilemap>(); var bound = tilemap.cellBounds; for ( int y = bound.max.y - 1; y >= bound.min.y; --y ) { for ( int x = bound.min.x; x < bound.max.x; ++x ) { var pos = new Vector3Int( x, y, 0 ); // </tilemap>…

【Unity】Tilemap の Inspector に Refresh All Tiles を実行するボタンを追加するエディタ拡張

概要 using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.Tilemaps; [CustomEditor(typeof(Tilemap))] public sealed class TilemapEditor : Editor { public override void OnInspectorGUI() { base.OnInspector…

【Unity】エディタでシーンを開いた時に Tilemap のすべてタイルを自動でリフレッシュするエディタ拡張

概要 using System.Linq; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine.SceneManagement; using UnityEngine.Tilemaps; [InitializeOnLoad] public static class AllTilesRefresher { static AllTilesRefresher() { EditorScen…

【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】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 エディタを開発者モードにすることで確認できます 関連記事

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

ソースコード using System; using System.Collections.Generic; using System.Reflection; using UnityEditor; using UnityEngine; public static class GridPaintingStateUtils { private const BindingFlags BINDING_ATTR = BindingFlags.Static | Bindin…

【Unity】Tilemap の Tile Palette に登録されているすべてのブラシを取得する方法

ソースコード using System; using System.Collections.Generic; using System.Reflection; using UnityEditor; using UnityEngine; public static class GridPaletteBrushesUtils { private const BindingFlags BINDING_ATTR = BindingFlags.Static | Bindi…

【Unity】Tilemap で Tile Palette のブラシが変更された時に呼び出されるイベント

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

【Unity】Tilemap で Tile Palette の Active Tilemap が変更された時に呼び出されるイベント

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

【Unity】Tilemap が複製された時に、複製された Tilemap を Tile Palette の Active Tilemap に自動で設定するエディタ拡張

概要 Tilemap が複製された時は Tile Palette の Active Tilemap は変化しないですが using System.Reflection; using UnityEditor; [InitializeOnLoad] public static class Example { static Example() { EditorApplication.hierarchyChanged += OnChanged…

【Unity】Tilemap で Tile Palette の Active Tilemap をスクリプトから変更する方法

概要 using System.Reflection; using UnityEditor; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var assembly = typeof( AssetDatabase ).Assembly; var type = assembly.GetType( "UnityEditor.GridPaintingState" )…

【Unity】タイルマップ - 塗ったタイルをすべて削除するエディタ拡張

ソースコード using UnityEditor; using UnityEngine; using UnityEngine.Tilemaps; public static class TilemapEditorUtils { [MenuItem( "CONTEXT/Grid/Clear All Tiles" )] private static void ClearAllTilesFromGrid( MenuCommand menuCommand ) { var…

【Unity】タイルマップ - 塗ったタイルを矩形ツールで削除する方法

概要 矩形ツールを選択した状態で Shift を押しながら左クリック&ドラッグすることで、タイルを矩形で削除することができます

【Unity】Tiled Map Editor で作成したマップを Unity のタイルマップに変換できる「SuperTiled2Unity」紹介

はじめに 「SuperTiled2Unity」を Unity プロジェクトに導入することで Tiled Map Editor で作成したマップを Unity のタイルマップに変換できるようになります 使い方 Unity プロジェクトに タイルマップのファイル(.tmx) タイルセットのファイル(.tsx)…

【Unity】タイルマップ - 隙間が見えてちらつく時の対応方法

はじめに ここでは、タイルマップの隙間が見えてちらつく時の対応方法を紹介していきます テクスチャの設定の見直し タイルマップで使用しているテクスチャを選択し、 「Filter Mode」を「Point (no filter)」に変更し、「Apply」ボタンを押します アンチエ…

【Unity】タイルマップの使い方、便利な機能、エディタ拡張など17件の記事に分けて紹介

はじめに この記事では、Unity 2017.2 から使用できるタイルマップの使い方をまとめました 基本 基本的な使い方 コンテキストメニュー 便利なタイル アニメーション付きのタイルを塗ることができる「Animated Tile」 パイプをつなぐようにタイルを塗ることが…

【Unity】タイルマップ - ブラシを自作する方法

はじめに Unity のタイルマップでは、ブラシを自作することができます この記事では、ブラシを自作する方法を紹介していきます 作成方法 ブラシの作成はエディタ拡張となるため、 Unity プロジェクトの「Editor」フォルダ内にスクリプトを作成する必要があり…

【Unity】タイルマップ - ブラシを自作してみる

はじめに Unity のタイルマップではブラシを自作することができます この記事では、3 x 3 マスのサイズのブラシを自作してみます 作り方 「Editor」フォルダに「BoldBrush」スクリプトを作成して、 上記のコードを貼り付けて保存します そして、TIle Palette…

【Unity】タイルマップ - Tilemap クラスでよく使う関数

はじめに この記事では Tilemap クラスでよく使う関数をまとめました 目次 はじめに 目次 AddTileFlags BoxFill ClearAllTiles CompressBounds ContainsTile GetCellCenterLocal GetCellCenterWorld GetColliderType GetColor GetInstantiatedObject GetSpri…

【Unity】タイルマップ - Tile Palette で使用できるコンテキストメニュー

概要 Tile Palette を右クリックするか、Tile Palette のタイル一覧を左右同時クリックすると、 コンテキストメニューが表示されます 項目 内容 Select Paint Target 対象の Tilemap を Hierarchy で選択 Select Palette Prefab 使用中の Tile Palette のプ…

【Unity】タイルマップ - タイルに色を塗ることができるブラシ「Tint Brush」

はじめに GitHub に公開されている上記のアセットを Unity プロジェクトに導入することで、 タイルに色を塗ることができるブラシ「Tint Brush」を使用できるようになります 導入方法 下記のページにアクセスする https://github.com/Unity-Technologies/2d-e…

【Unity】タイルマップ - タイルに色を塗ることができるブラシ「Tint Brush (Smooth)」

はじめに GitHub に公開されている上記のアセットを Unity プロジェクトに導入することで、 タイルに色を塗ることができるブラシ 「Tint Brush (Smooth)」を使用できるようになります 導入方法 下記のページにアクセスする https://github.com/Unity-Technol…

【Unity】タイルマップ - プレハブを塗ることができるブラシ「Prefab Brush」

はじめに GitHub に公開されている上記のアセットを Unity プロジェクトに導入することで、 プレハブを塗ることができるブラシ「Random Brush」を使用できるようになります 導入方法 下記のページにアクセスする https://github.com/Unity-Technologies/2d-e…