This document is about: QUANTUM 1
SWITCH TO

Unity Window コンフィグショートカット

SimulationConfigPhotonServerSettingsを何度も何度も探しているときに、ちょっとした怒りを感じたことはありませんか?

Quantum Panel Shortcuts

Quantum Panel Shortcuts

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