Share via


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

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

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

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

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

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

Unity 用 WebView プラグインの概要については、「HoloLens 2 Unity アプリでの WebView2 の概要」を参照してください。

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 イベント

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

webView.Navigated += OnNavigated;

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

IWebView.WindowCloseRequested イベント

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

webView.WindowCloseRequested += OnWindowCloseRequested;

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

IWebView プロパティ

IWebView.GameObject プロパティ

シーン内の WebView プラグインを表す最上位の Unity GameObject エンティティ。 読み取り専用

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 メッセージを送信します。 パラメーターに応じて、CoreWebView2.PostWebMessageAsString メソッドまたは CoreWebView2.PostWebMessageAsJson メソッドを呼び出します。isJSON

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();