Skip to content

Instantly share code, notes, and snippets.

@baba-s
Last active December 30, 2015 16:39
Show Gist options
  • Save baba-s/7855967 to your computer and use it in GitHub Desktop.
Save baba-s/7855967 to your computer and use it in GitHub Desktop.
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
/// <summary>
/// チートシートのウィンドウ
/// </summary>
public class CheatSheet : EditorWindow
{
// ホットキーのテーブル
private static readonly HotkeyTable[] HOTKEY_TABLES =
{
new HotkeyTable(
"Tool",
"Q", "パン",
"W", "移動",
"E", "回転",
"R", "拡大/縮小",
"Z", "ギズモの表示位置を切り替え",
"X", "ギズモの回転設定を切り替え",
"V", "頂点スナッピング",
"Ctrl+マウス左ボタン", "スナッピング"),
new HotkeyTable(
"Game Object",
"Ctrl+Shift+N", "game objectを生成する",
"Ctrl+Alt+F", "ビューに移動",
"Ctrl+Shift+F", "ビューに位置合わせ"),
new HotkeyTable(
"Window",
"Ctrl+1", "Scene",
"Ctrl+2", "Game",
"Ctrl+3", "Inspector",
"Ctrl+4", "Hierarchy",
"Ctrl+5", "Project",
"Ctrl+6", "Animation",
"Ctrl+7", "Profiler",
"Ctrl+9", "Asset store",
"Ctrl+0", "Animation",
"Ctrl+Shift+C", "Console"),
new HotkeyTable(
"Edit",
"Ctrl+Z", "取り消す",
"Ctrl+Y", "やり直す",
"Ctrl+X", "カット",
"Ctrl+C", "コピー",
"Ctrl+V", "貼り付け",
"Ctrl+D", "複製",
"Shift+Del", "削除",
"F", "選択項目をフレームの中央に",
"Ctrl+F", "検索",
"Ctrl+A", "全ての項目を選択",
"Ctrl+P", "再生",
"Ctrl+Shift+P", "ポーズ",
"Ctrl+Alt+P", "ステップ実行"),
new HotkeyTable(
"Selection",
"Ctrl+Shift+1", "1から選択状況をロード",
"Ctrl+Shift+2", "2から選択状況をロード",
"Ctrl+Shift+3", "3から選択状況をロード",
"Ctrl+Shift+4", "4から選択状況をロード",
"Ctrl+Shift+5", "5から選択状況をロード",
"Ctrl+Shift+6", "6から選択状況をロード",
"Ctrl+Shift+7", "7から選択状況をロード",
"Ctrl+Shift+8", "8から選択状況をロード",
"Ctrl+Shift+9", "9から選択状況をロード",
"Ctrl+Alt+1", "1に選択状況をセーブ",
"Ctrl+Alt+2", "2に選択状況をセーブ",
"Ctrl+Alt+3", "3に選択状況をセーブ",
"Ctrl+Alt+4", "4に選択状況をセーブ",
"Ctrl+Alt+5", "5に選択状況をセーブ",
"Ctrl+Alt+6", "6に選択状況をセーブ",
"Ctrl+Alt+7", "7に選択状況をセーブ",
"Ctrl+Alt+8", "8に選択状況をセーブ",
"Ctrl+Alt+9", "9に選択状況をセーブ"),
new HotkeyTable(
"Assets",
"Ctrl+R", "リフレッシュ"),
};
private Vector2 mScrollPos; // スクロールの座標
/// <summary>
/// チートシートのウィンドウを開きます
/// </summary>
[MenuItem("Tools/Open/Cheat Sheet")]
private static void Open()
{
GetWindow<CheatSheet>("Cheat Sheet");
}
/// <summary>
/// チートシートのウィンドウのGUIを作成します
/// </summary>
private void OnGUI()
{
EditorGUILayout.BeginVertical();
mScrollPos = EditorGUILayout.BeginScrollView(mScrollPos, GUILayout.Height(position.height));
foreach (var hotkeyTable in HOTKEY_TABLES)
{
EditorGUILayout.LabelField(hotkeyTable.Title, EditorStyles.boldLabel);
foreach (var hotkey in hotkeyTable.Hotkeys)
{
EditorGUILayout.LabelField(hotkey.Key, hotkey.Command);
}
EditorGUILayout.Space();
}
EditorGUILayout.EndScrollView();
EditorGUILayout.EndVertical();
}
/// <summary>
/// ホットキーのデータ
/// </summary>
private class HotkeyData
{
private readonly string mKey; // 入力キー
private readonly string mCommand; // コマンド
public string Key { get { return mKey; } } // 入力キーを取得します
public string Command { get { return mCommand; } } // コマンドを取得します
/// <summary>
/// コンストラクタ
/// </summary>
public HotkeyData(string key, string command)
{
mKey = key;
mCommand = command;
}
}
/// <summary>
/// ホットキーのテーブル
/// </summary>
private class HotkeyTable
{
private readonly string mTitle; // タイトル
private readonly HotkeyData[] mHotkeys; // ホットキーのデータを管理する配列
public string Title { get { return mTitle; } } // タイトルを取得します
public IEnumerable<HotkeyData> Hotkeys { get { return mHotkeys; } } // ホットキーのデータを管理する配列を取得します
/// <summary>
/// コンストラクタ
/// </summary>
public HotkeyTable(string title, params string[] hotkeys)
{
var hotkeyNum = hotkeys.Length / 2;
mTitle = title;
mHotkeys = new HotkeyData[hotkeyNum];
for (int i = 0; i < hotkeyNum; i++)
{
var hotkeyIndex = i * 2;
var key = hotkeys[hotkeyIndex];
var command = hotkeys[hotkeyIndex + 1];
mHotkeys[i] = new HotkeyData(key, command);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment