うにてぃブログ

主にUnityとC#に関する記事を書いていきます

UnityEditor

【Unity】アセットのタイプに応じたアイコンの取得方法

Unityでは、アセットのアイコンを取得するために AssetDatabase.GetCachedIcon を利用できます。ただし、このメソッドを使用するにはアセットのパスが必要です。アセットのタイプだけでアイコンを取得したい場合、以下のような処理を利用することができます…

【Unity】OnApplicationPause の動作を UnityEditor 上でも確認する

Android や iOS のビルド用に OnApplicationPause を利用していた場合 初期状態の UnityEditor ではこちらのイベントが呼び出されないため動作の確認ができない しかし、PlayerSettings / Standalone / Run in Background を無効にすることで、UnityEditor …

【Unity】EditorGUI でラベルの幅を変更する

EditorGUIUtility.labelWidth の値を変更することでラベルの幅を変更することができます // デフォルトは 150 EditorGUILayout.IntField($"Field {EditorGUIUtility.labelWidth}", 0); for (int i = 100; i <= 400; i += 100) { EditorGUIUtility.labelWidth…

【Unity】Editor 上で再生停止を繰り返す

スクリプトから UnityEditor を再生する場合は以下の処理をすればよい EditorApplication.isPlaying = true; しかし、UnityEditor が再生されるタイミングで、static なインスタンスが初期化されるため、Unity API にイベントを登録してあったとしても消えて…

【Unity】UnityEditor の中心座標を取得する

UnityEditor の中心に EditorWindow を表示させるためには、MainWindow の座標を取得することで可能になる が MainWindow の情報は public な訳もなく、Reflection を利用して、MainWindow 探し その位置を取得することで中心位置を知ることができる コード …

【Unity】正規表現に対応した TextField

TextField で入力制限をしたかったので作成、入力のたびに判定したかったがうまく行かなかったのでDelayedTextField を利用している using System.Text; using System.Text.RegularExpressions; using UnityEditor; using UnityEngine; public static class …

【Unity】AnimatorController の AnimationClip をスクリプトで変更する方法

using UnityEditor; using UnityEngine; using AnimatorController = UnityEditor.Animations.AnimatorController; public static class AnimatorUtility { public static bool ReplaceAnimationClip(string path, string replaceName, AnimationClip clip) …

【Unity】UnityEditor で 確認ダイアログを表示する

ボタンの文言も変えることができます OKボタンのみのダイアログ if (EditorUtility.DisplayDialog("Tile", "Body", "OK")) { Debug.Log("Click"); } Yes No のダイアログ if (EditorUtility.DisplayDialog("Tile", "Body", "Yes", "No")) { Debug.Log("Yes")…

【Unity】UnityProject 外のファイルを UnityProject にコピーする

UnityProject 内のファイル操作なら AssetDatabase を利用すれば可能ですが UnityProject 外からファイルを操作する場合は System.IO 系を利用する必要があり こちらはルートからのフルパスで指定する必要がある ※ AssetDatabase であれば "Assets/" から始…

【Unity】Git ツール機能追加 ~Serialize対応 と pull push, ショートカットの詳細~

hacchi-man.hatenablog.com 上記 Git ツールの機能追加を行いました Serialize対応 今までは、コンパイルが走ると Serialize に対応していなかったので、モードが違っていたりすると 毎回 Log ウィンドウから始まってしまうことがありましたが Serialize の…

【Unity】Git ツールの改修 ~クリック処理とショートカット一覧, スペース入ファイルの対応~

hacchi-man.hatenablog.com 引き続き上記 Git ツールの改修を行いました ダブルクリック処理 今までは選択した後、Enter を押す必要がありましたが ダブルクリックでも Enter と同じ挙動をするように対応しました ショートカット一覧表示 現在のモードや、ど…

【Unity】色別の GUIStyle をキャッシュするクラス

複数色の GUIStyle を使いまわしたいときに キャッシュして利用したいので、キャッシュ用クラスを作成してみました using System.Collections.Generic; using UnityEditor; using UnityEngine; public static class ColorLabel { private static Dictionary<Color, GUIStyle> </color,>…

【Unity】Git ツール機能追加 ~ブランチ機能~

hacchi-man.hatenablog.com 上記ツールにブランチ機能を追加しました b を押すことでブランチ一覧が表示されます ブランチの切り替え ブランチの切り替えは、w で変更することができます この際に差分があればダイアログが表示され、Yes を押すと stash して…

【Unity】UnityEditor 上で git 操作できるツールを作成

github.com いつもは Terminal を利用して git を操作していますが まれにファイルを探したりするときにファイル名をコピーして、検索が面倒だったりすることがある もしかしたら、UnityEditor 上で git 操作できれば手軽になるんじゃないかと思い作成してみ…

【Unity】スクリプトから エディタ を開く

InternalEditorUtility.OpenFileAtLineExternal を利用することで Unity の Preferences に設定してある External Script Editor をスクリプトから開くことができます Unity内の利用例で言うと、Consoleをクリックしたときの処理はこちらのメソッドを利用し…

【Unity】EditorGUI で テキストフィールドにフォーカスする方法

EditorGUI.FocusTextInControl に GUI.SetNextControlName で指定した名前を渡すことでフォーカスさせることができる private string _text; private void OnGUI() { GUI.SetNextControlName("CommitMessage"); _text = EditorGUILayout.TextField(_text); i…

【Unity】UnityEditor で動作する ターミナル を作成する

※ Mac OS でのみ動作確認を行いました Process.Start を利用することで C# のコード上でも ターミナル(コマンドライン?)を実行することができるので UnityEditor 上で ターミナル的なことができるか試してみました ProcessStartInfo.filename にはフルパ…

【Unity】GUILayoutOption のキャッシュクラス

GUILayoutOption は キャッシュして使うべきだが、毎度キャッシュ処理を書くのが面倒なので キャッシュ用のクラスを作成、WidthとHeightしか対応していないため、その他の場合は別のキャッシュ機構が必要になる internal static class CacheOption { private…

【Unity】EditorWindow を UnityEditor の中心に持ってくる処理

EditorWindow を取得して CenterOnMainWin を呼び出せば中心に持ってこられる var window = GetWindow<SampleEdiorWindow>(); window.CenterOnMainWin(); public static class EditorWindowExtensions { public static void CenterOnMainWin(this EditorWindow self) { var main</sampleediorwindow>…

【Unity】TreeView の拡張に利用できる変数一覧

showAlternatingRowBackgrounds 背景色を1行ずつ変更する showBoarder TreeViewの描画枠に枠線を表示する Border無しBorder有り depthIndentWidth 子要素を表示させた際のインデント幅 (100) useScrollView Viewをスクロール可能にするかどうか customFoldou…

【Unity】TreeView の Override メソッド一覧

BuildRoot BuildRows GetRows OnGUI SelectionChanged SingleClickedItem DoubleClickedItem ContextClickedItem ContextClicked ExpandedStateChanged SearchChanged KeyEvent GetDescendantsThatHaveChildren CanMultiSelect CanRename RenameEnded CanSta…

【Unity】検索窓付きの TreeView サンプル

using System.Collections.Generic; using UnityEditor; using UnityEditor.IMGUI.Controls; using UnityEngine; public class SearchTreeViewSample : EditorWindow { [MenuItem("Tools/SampleTreeView")] private static void ShowWindow() { GetWindow<SearchTreeViewSample>();</searchtreeviewsample>…

【Unity】UnityEditor の起動時にのみ処理を行う

UnityEditor の起動時にのみ処理を走らせたいと思い、処理を探していると公式の記事が見つかりました 起動時エディタースクリプト実行 - Unity マニュアル がこちらの記事は「起動時エディタースクリプト実行」とありますが、起動時以外にも コンパイルが走…

【Unity】UnityEditor でドラッグアンドドロップ処理

using UnityEditor; using UnityEngine; using Object = UnityEngine.Object; public static class DragAndDropUtility { /// <summary> /// D&Dを開始する /// </summary> public static void Begin(Object[] objs, object data) { DragAndDrop.PrepareStartDrag(); DragAndDro…