[Unity Editor拡張]いつものアプリケーションで開くメニューを追加

Unityでシェーダーを描いたりするとき、UnityのProjectウィンドウのアイテムをダブルクリックすることで
エディタで編集したりするわけですが、<b><font color="DeepPink">一部の拡張子だけ融通がきかない！</font></b>

.png →　プレビューが開く（分かってんじゃん）
.cs　→　Riderが開く（まぁ、Unityのエディタ設定そうなってるしね）
.shader　→　<b><font color="Orange">Riderが開く(ん〜...個人的にSublime Textが開いてほしい...)</font></b>

↑ここの所が結構カユイところに手がとどかないんですよね.
ということでそれらを解消するために<font color="DeepPink">いつものアプリ(Defaut Application)で開くメニュー</font></b>を作ります。

##<font color="SlateBlue">[1]</font> Finderでデフォルトアプリケーションを設定

まず、システムのデフォルトアプリケーション設定をします。デフォルトアプリケーションというのは、それぞれの拡張子に紐付けられるアプリケーションのことですね。.htmlならchromeみたいな.

手元にあったのがmac環境なのでそちらで説明します。
まずFinderで<font color="SlateBlue">.shader</font>などのUnityで使う拡張子のファイルを選択し
<img width="217" alt="スクリーンショット 2018-02-26 12.53.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/eead886d-6e71-fa73-4e84-d8299fe0691c.png">

<font color="SlateBlue">情報を見る</font>を選択
<img width="253" alt="スクリーンショット 2018-02-26 12.53.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/0d27e21a-2e39-9526-27d9-baa76a4a730e.png">

詳細情報が出るので、そこの中にある<font color="SlateBlue">このアプリケーションで開く</font>という項目から
デフォルトアプリを設定します。私の場合shaderをsublime textで編集したいのでsublime textを選択しました。
その後特に問題がなければ<font color="SlateBlue">すべてを変更...</font>を押します。
<img width="258" alt="スクリーンショット 2018-02-26 12.53.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/1421527f-91ff-bbef-12d9-b14f4ced520d.png">

このように設定することでデフォルトアプリケーションが設定できました。

##<font color="SlateBlue">[2]</font> Unityを開きAssets/Editorにcsファイルを置く

エディタ拡張用のファイルを起きます。<font color="SlateBlue">Assets/Editor</font>はUnity上では特殊フォルダという扱いでエディタ拡張用のスクリプトは普通はそこに置きます。

では以下のC#スクリプトをコピペして下さい。
https://gist.github.com/nmxi/838ddea06cf90039b53c8b148788453c

```C#:EDITOR_FileOpenInApp.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using System.Diagnostics;

//システムのデフォルトアプリケーションでファイルを開く機能を
//Projectウィンドウのファイル選択→右クリック、または左上のAssetsボタンから呼ぶことができる
public class EDITOR_FileOpenInApp: EditorWindow {

	[MenuItem("Assets/Open in System Default Application")]
	private static void GetSelectFile(){
		
		if(Selection.assetGUIDs != null && Selection.assetGUIDs.Length > 0){
			List<string> fileList = new List<string>();
     
			foreach(var files in Selection.assetGUIDs){
				var path = AssetDatabase.GUIDToAssetPath(files);
				fileList.Add(path);
			}

			foreach (string directory in fileList) {
				Command("open " + Application.dataPath + directory.Substring(6, directory.Length - 6));
			}
		}
	}

	static string Command(string cmd){
		var p = new Process();
		p.StartInfo.FileName = "/bin/bash";
		p.StartInfo.Arguments = "-c \" " + cmd + " \"";
		p.StartInfo.UseShellExecute = false;
		p.StartInfo.RedirectStandardOutput = true;
		p.Start();

		var output = p.StandardOutput.ReadToEnd();
		p.WaitForExit();
		p.Close();

		return output;
	}
}
```

こんな感じに置けましたでしょうか.
<img width="213" alt="スクリーンショット 2018-02-26 13.07.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/6b26646e-4937-faf1-c392-9899a8b8a3e9.png">

正常に置かれていれば、<font color="SlateBlue">Projectウィンドウでファイル選択→右クリック</font>をすることで以下のような
<font color="SlateBlue">Open in System Default Application</font>というボタンが表示されます。
<img width="280" alt="スクリーンショット 2018-02-26 13.10.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/4918cde7-257c-e0b9-03fb-07354ff28b9c.png">


これを押すことでUnity上のエディタ設定とは例外のアプリケーションでファイルを開くことが可能になります。