以前から気になってたUnityエディタ拡張で動画を見る方法試してみた
Unityのエディタ拡張で動画を見よう(というかWebView使って色々しよう)!というもの。 なんとも素晴らしい記事に心をつかまれました。
以前から気になっていたのですが、なかなかタイミングがなくてこの時期に。。。
処理内容
コードはネタの元記事を参照してください。
処理はとても単純で
- UnityEditor.dllのUnityEditor.Web.WebViewEditorWindow型をリフレクションで得る
- WebViewEditorWindowのCreateメソッドの情報を得る
- MakeGenericMethodでCreateのGeneric型引数を指定する
- InvokeでCreateを呼び出す
といった感じ。
UnityEditor.Web名前空間内のクラスが隠蔽されているため、その機能を使うためにリフレクションを使っているようです。 実際にILDASMで見てみるとCreateはこんな感じ。
んむ。そうか。そうか。 もうちょっと突っ込んで中身を見てみると大体こんな感じらしい。
public static WebViewEditorWindow Create<T>(string title, string sourcesPath, int minWidth, int minHeight, int maxWidth, int maxHeight) where T : new() { WebViewEditorWindow webViewEditorWindow = ScriptableObject.CreateInstance<WebViewEditorWindow>(); webViewEditorWindow.titleContent = new GUIContent(title); webViewEditorWindow.minSize = new Vector2((float)minWidth, (float)minHeight); webViewEditorWindow.maxSize = new Vector2((float)maxWidth, (float)maxHeight); webViewEditorWindow.m_InitialOpenURL = sourcesPath; webViewEditorWindow.m_GlobalObjectTypeName = typeof(T).FullName; webViewEditorWindow.Init(); webViewEditorWindow.Show(); return webViewEditorWindow; }
これ見ると納得できますね。
実際に使ってみるとこんな感じ。
う~ん、素晴らしいです・・・
感動!