次の方法で共有


Mixed Reality WebView プラグインの API リファレンス (プレビュー)

重要

WebView2 は引き続き使用できます。 ただし、HoloLens での WebView2 のサポートは廃止されます (バグ修正、コンテンツの更新、またはテクニカル サポートはありません)。そのため、アプリケーションが長期間にわたって動作し続けるという保証はありません。

Unity 用の Microsoft Mixed Reality WebView プラグイン は、HoloLens 2 アプリへの WebView2 機能の統合を可能にします。 Unity 用のこの WebView プラグインは、WebView2 コントロールをラップし、レンダリングを自動的に処理し、入力を WebView2 コントロールに自動的に送ることで、HoloLens 2 アプリへの WebView2 機能の統合を簡略化します。

また、このプラグインは Unity と WebView2 の間の相互運用を管理し、メッセージとイベントを介した JavaScript と Unity の間の通信を可能にします。

このプラグインは、 CoreWebView2 を介して使用できる機能のサブセットを公開します。

HoloLens 2 の WebView2 と Unity 用 WebView プラグインはどちらもプレビュー段階であり、一般公開前に変更される可能性があります。 WebView2 プレビューは、Microsoft HoloLens の Insider プレビューで利用できます。 このプレビューにアクセスするには、Windows Insider Program に登録されている必要があります。Microsoft HoloLens の Insider プレビューで Insider ビルドの受信を開始するを参照してください。

WebView2 と WebView プラグインは、Windows 11 更新プログラムを実行している HoloLens 2 デバイスでのみサポートされます。 詳細については、「 Update HoloLens 2」を参照してください。

Unity 用 WebView プラグインの概要については、「 Get started with WebView2 in HoloLens 2 Unity appsを参照してください。

IWebView インターフェイス

Unity 用 WebView プラグインのメイン インターフェイス。

public interface IWebView
{
    event WebView_OnNavigated Navigated;

    event WebView_OnCloseRequested WindowCloseRequested;

    GameObject GameObject { get; }

    Texture2D Texture { get; }

    int Width { get; set; }

    int Height { get; set; }

    Uri Page { get; }
    
    Task OnceCreated { get; }

    void Resize(int width, int height);

    void Load(Uri url);

    void Dispose();
}

IWebView デリゲート

public delegate void WebView_OnNavigated(string path);

public delegate void WebView_OnCanGoForwardUpdated(bool value);

IWebView イベント

IWebView.Navigated イベント

WebView によって CoreWebView2.SourceChanged イベント が発生したときにトリガーされるイベント。

webView.Navigated += OnNavigated;

private void OnNavigated(string uri)
{
    UrlField.text = uri;
}

IWebView.WindowCloseRequested イベント

WebView によって CoreWebView2.WindowCloseRequested イベント が発生したときにトリガーされるイベント。

webView.WindowCloseRequested += OnWindowCloseRequested;

private void OnWindowCloseRequested()
{
    Destroy(GameObject);
}

IWebView プロパティ

IWebView.GameObject プロパティ

シーン内の WebView プラグインを表す最上位の Unity GameObject エンティティ。 Readonly

IWebView.Texture プロパティ

WebView コンテンツがレンダリングされる 2D Unity Texture2D オブジェクト。 Readonly

IWebView.Width プロパティ

WebView テクスチャと WebView コントロールの幅。 Unity シーン内の IWebView インスタンスのレンダリングされたディメンションは、 GameObjectによって制御されます。

IWebView.Height プロパティ

WebView テクスチャと WebView コントロールの高さ。 Unity シーン内の IWebView インスタンスのレンダリングされたディメンションは、 GameObjectによって制御されます。

IWebView.Page プロパティ

現在読み込まれている、または WebView コントロールによって移動されている URI。 Readonly

IWebView.OnceCreated プロパティ

タスクは、WebView コントロールが完全にインスタンス化され、使用する準備ができたときに実行されます。 Readonly

webView.OnceCreated.ContinueWith((task) => {

    // Finish setting up plugin.
    webview.Navigated += OnNavigated;
    webview.WindowCloseRequested += OnWindowCloseRequested;

    Load(initialURL);

}, TaskScheduler.FromCurrentSynchronizationContext());

IWebView メソッド

IWebView.Resize メソッド

WebView2 コントロールと Textureのサイズを変更します。 詳細については、基になる CoreWebView2Controller.Bounds プロパティを参照してください。

Unity シーン内の IWebView インスタンスのレンダリングされたディメンションは、 GameObjectによって制御されます。

Resize(600, 400);

IWebView.Load メソッド

指定された URI に移動します。 詳細については、基になる CoreWebView2.Navigate メソッドを参照してください。

Load(new Uri("https://www.microsoft.com"));

IWebView.Dispose メソッド

IWebView インスタンスに関連するメモリ、ハンドル、コールバックなどのリソースをクリアします。

内部メモリが適切に解放されるように、特定の IWebView インスタンスが完了したら、このメソッドを呼び出します。 Disposeが呼び出された後、IWebView インスタンスは無効と見なされます。

void OnDestroy()
{
    webView.Dispose();
}

IWithMouseEvents インターフェイス

Unity 用 WebView プラグインのマウスとポインターの入力をサポートします。

public interface IWithMouseEvents
{
    void MouseEvent(WebViewMouseEventData mouseEvent);
}

IWithMouseEvents メソッド

IWithMouseEvents.MouseEvent メソッド

WebViewMouseEventData イベントを WebView コントロールに伝達します。 内部ロジックに応じて、イベントは CoreWebView2Controller.SendMouseInput メソッド または CoreWebView2Controller.SendPointerInput メソッドを呼び出します。

public void OnPointerDown(PointerEventData eventData)
{
    IWithMouseEvents mouseEventsWebView = webView as IWithMouseEvents;

    // Call hypothetical function which converts the event's x, y into the WebView2's coordinate space.
    var hitCoord = ConvertToWebViewSpace(eventData.position.x, eventData.position.y);

    WebViewMouseEventData mouseEvent = new WebViewMouseEventData
    {
        X = hitCoord.x,
        Y = hitCoord.y,
        Type = PointerEvent.PointerDown,
        Button = PointerButton.Left,
        TertiaryAxisDeviceType = WebViewMouseEventData.TertiaryAxisDevice.PointingDevice
    };

    mouseEventsWebView.MouseEvent(mouseEvent);
}

IWithPostMessage インターフェイス

Unity コードとホストされている WebView コード間の相互運用通信のためのインターフェイス。

WebView2 の相互運用の詳細については、「 ネイティブ側と Web 側のコードの相互運用を参照してください。

public interface IWithPostMessage : IWebView
{
    event WebView_OnPostMessage MessageReceived;

    void PostMessage(string message, bool isJSON = false);
}

IWithPostMessage デリゲート

public delegate void WebView_OnPostMessage(string message);

IWithPostMessage イベント

IWithPostMessage.MessageReceived メソッド

WebView コントロールから新しい JavaScript メッセージを受信したときにトリガーされます。 詳細については、基になる CoreWebView2.WebMessageReceived イベントを参照してください。

(webView as IWithPostMessage).MessageReceived += OnMessageReceived;

void OnMessageReceived(string message)
{
    Debug.Log(message);
}

IWithPostMessage メソッド

IWithPostMessage.PostMessage メソッド

WebView コントロールでホストされているコンテンツに JavaScript メッセージを送信します。 isJSON パラメーターに応じて、CoreWebView2.PostWebMessageAsString メソッドまたは CoreWebView2.PostWebMessageAsJson メソッドを呼び出します。

var msg = new MyMessage("updateText", "Updated from Unity!");

(webView as IWithPostMessage).PostMessage(JsonUtility.ToJson(msg), true);

IWithBrowserHistory インターフェイス

前のページへの移動など、ブラウザー履歴に関連する機能を処理します。

public interface IWithBrowserHistory : IWebView
{
    event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;

    event WebView_OnCanGoBackUpdated CanGoBackUpdated;

    void GoBack();

    void GoForward();
}

IWithBrowserHistory デリゲート

public delegate void WebView_OnCanGoBackUpdated(bool value);

public delegate void WebView_OnCloseRequested();

IWithBrowserHistory イベント

IWithBrowserHistory.CanGoForwardUpdated イベント

ナビゲーションが発生したときにトリガーされます。 イベント デリゲートは、CoreWebView2.CanGoForward プロパティtrueされている場合にtrue値を提供します。

(webView as IWithBrowserHistory).CanGoBackUpdated += OnCanGoBack;

void OnCanGoBack(bool value)
{
    BackButton.enabled = value;
}

IWithBrowserHistory.CanGoBackUpdated イベント

ナビゲーションが発生したときにトリガーされます。 イベント デリゲートは、CoreWebView2.CanGoBack プロパティtrueされている場合にtrue値を提供します。

(webView as IWithBrowserHistory).CanGoForwardUpdated += OnCanGoForward;

void OnCanGoForward(bool value)
{
    ForwardButton.enabled = value;
}

IWithBrowserHistory メソッド

IWithBrowserHistory.GoBack メソッド

前のページに移動します。 詳細については、基になる CoreWebView2.GoBack メソッドを参照してください。

(webView as IWithBrowserHistory).GoBack();

IWithBrowserHistory.GoForward メソッド

次のページに移動します。 詳細については、基になる CoreWebView2.GoForward メソッドを参照してください。

(webView as IWithBrowserHistory).GoForward();