LoginSignup
38
31

More than 5 years have passed since last update.

UnityEditor上で艦これはできる

Last updated at Posted at 2014-10-09

この方のツイートを見てやってみました。

Unity4.5

表示される。けど操作できない。

あ...これ満員だからクリックしても反応ないだけ?艦これやったこと無いのでわかりません\(^o^)/

ss 2014-10-10 2.45.30.png

using UnityEngine;
using UnityEditor;

public class Kancolle : EditorWindow
{
    WebView webview;

    [MenuItem("Window/Kancolle")]
    static void Open ()
    {
        var window = GetWindow<Kancolle> ();
        window.wantsMouseMove = true;
    }

    void OnGUI ()
    {
        if (webview == null) {
            webview = CreateInstance<WebView> ();
            webview.InitWebView ((int)position.width, (int)position.height - 23, true);
            webview.LoadURL ("http://www.dmm.com/netgame/social/-/gadgets/=/app_id=854854/");
        } else {
            webview.DoGUI (new Rect (0, 0, position.width, position.height));
        }
    }
}

Unity5.0

FlashPlayerに対応していません!

ss 2014-10-10 2.10.13.png

using UnityEngine;
using UnityEditor;
using System.Reflection;

public class Kancolle : EditorWindow
{
    static BindingFlags fullBinding = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
    ScriptableObject webview;
    static MethodInfo setSizeAndPosition;

    [MenuItem("Window/Kancolle")]
    static void Open ()
    {
        var window = GetWindow<Kancolle> ();
        window.wantsMouseMove = true;
        if (window.webview == null) {

            var dockArea = typeof(EditorWindow).GetField ("m_Parent", fullBinding).GetValue (window);

            var webViewType = Types.GetType ("UnityEditor.WebView", "UnityEditor.dll");
            var initWebView = webViewType.GetMethod ("InitWebView", fullBinding);
            var loadURL = webViewType.GetMethod ("LoadURL", fullBinding);
            setSizeAndPosition = webViewType.GetMethod ("SetSizeAndPosition", fullBinding);


            window.webview = CreateInstance (webViewType);


            initWebView.Invoke (window.webview, new object[] {
                dockArea,
                0,
                23,
                (int)window.position.width,
                (int)window.position.height - 23,
                true
            });

            loadURL.Invoke (window.webview, new object[]{"http://www.dmm.com/netgame/social/-/gadgets/=/app_id=854854/"});

        }


    }

    void OnGUI ()
    {
        if(setSizeAndPosition !=null)
            setSizeAndPosition.Invoke(webview,new object[]{0,
            23,
            (int)position.width,
            (int)position.height}
        );
    }
}

Unity5.1.0f2

ss 2015-05-25 12.25.24.png

Flash動いた!

using UnityEngine;
using UnityEditor;
using System.Reflection;

public class KancolleWindow : ScriptableObject
{
    static BindingFlags Flags = BindingFlags.Public | BindingFlags.Static;

    [MenuItem("Window/Kancolle")]
    static void Open ()
    {
        var type = Types.GetType ("UnityEditor.Web.WebViewEditorWindow", "UnityEditor.dll");
        var methodInfo = type.GetMethod ("Create", Flags);
        methodInfo = methodInfo.MakeGenericMethod (typeof(KancolleWindow));
        methodInfo.Invoke (null, new object[]{
            "Kancolle",
            "http://www.dmm.com/netgame/social/-/gadgets/=/app_id=854854/",
            200, 530, 800, 600
        });
    }
}

Unity5.4.0

WebViewEditorWindow が abstract になるので修正が必要です。

WebViewEditorWindowTabs を呼び出すようにします。

using UnityEngine;
using UnityEditor;
using System.Reflection;

public class KancolleWindow : ScriptableObject
{
    static BindingFlags Flags = BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy;

    [MenuItem ("Window/Kancolle")]
    static void Open ()
    {
        var type = Types.GetType ("UnityEditor.Web.WebViewEditorWindowTabs", "UnityEditor.dll");

        var methodInfo = type.GetMethod ("Create", Flags);
        methodInfo = methodInfo.MakeGenericMethod (type);
        methodInfo.Invoke (null, new object[] {
            "Kancolle",
            "http://www.dmm.com/netgame/social/-/gadgets/=/app_id=854854/",
            200, 530, 800, 600
        });
    }
}
38
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
31