Unity Window コンフィグショートカット
SimulationConfig
やPhotonServerSettings
を何度も何度も探しているときに、ちょっとした怒りを感じたことはありませんか?
C#
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class QuantumPanel : EditorWindow {
[MenuItem("Quantum/Show Quantum Panel")]
public static void ShowWindow() {
GetWindow(typeof(QuantumPanel));
}
void OnGUI() {
ShowShortcuts();
}
void ShowShortcuts() {
using (new CustomEditorsHelper.BoxScope("Select Shortcuts")) {
using (new EditorGUILayout.HorizontalScope()) {
if (GUILayout.Button("Simulation Configs", EditorStyles.miniButton))
SearchAndSelect<SimulationConfigAsset>();
if (GUILayout.Button("Physics Materials", EditorStyles.miniButton))
SearchAndSelect<PhysicsMaterialAsset>();
if (GUILayout.Button("NavMesh Agent Configs", EditorStyles.miniButton))
SearchAndSelect<NavMeshAgentConfigAsset>();
}
using (new EditorGUILayout.HorizontalScope()) {
if (GUILayout.Button("Deterministic Configs", EditorStyles.miniButton))
SearchAndSelect<DeterministicSessionConfigAsset>();
if (GUILayout.Button("PhotonServerSettings", EditorStyles.miniButton))
SearchAndSelect<ServerSettings>();
if (GUILayout.Button("Editor Settings", EditorStyles.miniButton))
SearchAndSelect<QuantumEditorSettings>();
}
}
if (GUI.changed)
EditorUtility.FocusProjectWindow();
}
public static T SearchAndSelect<T>() where T : Object {
var t = typeof(T);
string[] guids = AssetDatabase.FindAssets("t:" + t.Name, null);
if (guids.Length == 0) {
Debug.LogFormat("No UnityEngine.Objects of type '{0}' found.", t.Name);
return null;
}
var selectedObjects = new List<Object>();
for (int i = 0; i < guids.Length; i++) {
selectedObjects.Add(AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guids[i]), t));
}
Selection.objects = selectedObjects.ToArray();
return (T)selectedObjects[0];
}
}
Back to top