※この記事のUnityのバージョンは5.3.5f1です
はじめに
ゲームオブジェクトにアタッチされたスクリプトを開くとき、マウスを使って
ダブルクリックするの面倒くさいですよね。
そこで、選択しているオブジェクトにアタッチされている全てのスクリプトを
1回のキー入力で開けるようにするエディター拡張を作ってみました。

ソースコード
以下のスクリプトをUnityプロジェクトに入れるだけで使えるようになります.
EditorOpenComponents.cs
# if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Reflection;
[InitializeOnLoad]
public class EditorOpenComponents
{
static EditorOpenComponents()
{
bool keyDown = false;
EditorApplication.CallbackFunction function = () =>
{
if (!keyDown && Event.current.type == EventType.KeyDown)
{
keyDown = true;
// . が入力されたらHierarchyで選択しているオブジェクトにアタッチされているすべてのスクリプトを開く
if (Event.current.keyCode == KeyCode.Period && Selection.activeGameObject != null)
{
var mss = Resources.FindObjectsOfTypeAll<MonoScript>();
foreach (var ms in mss)
{
var cls = ms.GetClass();
if (cls != null)
{
if (cls.IsSubclassOf(typeof(MonoBehaviour)) && Selection.activeGameObject.GetComponent(cls) != null)
{
// スクリプトを開く
OpenInEditor(cls.ToString(), 0);
}
}
}
}
}
if (keyDown && Event.current.type == EventType.KeyUp)
{
keyDown = false;
}
};
FieldInfo info = typeof(EditorApplication).GetField("globalEventHandler", BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);
EditorApplication.CallbackFunction functions = (EditorApplication.CallbackFunction)info.GetValue(null);
functions += function;
info.SetValue(null, (object)functions);
}
/// <summary>
/// スクリプトを外部エディタで開く
/// </summary>
public static void OpenInEditor(string scriptName, int scriptLine)
{
string[] paths = AssetDatabase.GetAllAssetPaths();
foreach (string path in paths)
{
string scriptPath = System.IO.Path.GetFileNameWithoutExtension(path);
if (scriptPath.Equals(scriptName))
{
MonoScript script = AssetDatabase.LoadAssetAtPath(path, typeof(MonoScript)) as MonoScript;
if (script != null)
{
if (!AssetDatabase.OpenAsset(script, scriptLine))
{
Debug.LogWarning("Couldn't open script : " + scriptName);
}
break;
}
else
{
Debug.LogWarning("Couldn't open script : " + scriptName);
}
break;
}
}
}
}
# endif // UNITY_EDITOR
使い方
- HierarchyのGameObjectを選択。

- キーボードの . を押す。
- 押すと選択しているGameObjectにアタッチされているすべてのスクリプトが外部エディタで開かれます。

便利かも?
参考
UnityEditorのグローバルEventを取得する - けいごのなんとか
http://anchan828.hatenablog.jp/entry/2013/05/20/135339