다음을 통해 공유


Mixed Reality WebView 플러그 인에 대한 API 참조(미리 보기)

Important

WebView2는 계속 사용할 수 있습니다. 그러나 HoloLens의 WebView2에 대한 지원은 중단(버그 수정, 콘텐츠 업데이트 또는 기술 지원 없음)되므로 애플리케이션이 장기간 계속 작동하도록 보장할 수 없습니다.

Unity용 Microsoft Mixed Reality WebView 플러그 인을 사용하면 WebView2 기능을 HoloLens 2 앱에 통합할 수 있습니다. 이 Unity용 WebView 플러그 인은 WebView2 컨트롤을 래핑하고, 렌더링을 자동으로 처리하고, WebView2 컨트롤에 입력을 자동으로 전달하여 WebView2 기능의 HoloLens 2 앱 통합을 간소화합니다.

또한 이 플러그 인은 Unity와 WebView2 간의 interop를 관리하여 메시지와 이벤트를 통해 JavaScript와 Unity 간의 통신을 가능하게 합니다.

이 플러그 인은 CoreWebView2를 통해 사용할 수 있는 기능의 하위 집합을 노출합니다.

HoloLens 2의 WebView2 및 Unity용 WebView 플러그 인은 모두 미리 보기로 제공되며 일반 공급 전에 변경될 수 있습니다. WebView2 미리 보기는 Microsoft HoloLens용 Insider Preview에서 사용할 수 있습니다. 이 미리 보기에 액세스하려면 Windows 참가자 프로그램에 등록해야 합니다. Microsoft HoloLens의 Insider Preview에서 참가자 빌드 수신 시작을 참조하세요.

WebView2 및 WebView 플러그 인은 Windows 11 업데이트를 실행하는 HoloLens 2 디바이스에서만 지원됩니다. 자세한 내용은 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 개체입니다. 읽기 전용

IWebView.Width 속성

WebView 텍스처 및 WebView 컨트롤의 너비입니다. Unity 장면에서 인스턴스의 IWebView 렌더링된 차원은 에 의해 GameObject제어됩니다.

IWebView.Height 속성

WebView 텍스처 및 WebView 컨트롤의 높이입니다. Unity 장면에서 인스턴스의 IWebView 렌더링된 차원은 에 의해 GameObject제어됩니다.

IWebView.Page 속성

현재 로드되거나 WebView 컨트롤에서 탐색 중인 URI입니다. 읽기 전용

IWebView.OnceCreated 속성

WebView 컨트롤이 완전히 인스턴스화되고 사용할 준비가 되면 작업이 실행됩니다. 읽기 전용

예시
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 메서드

WebView 컨트롤에 이벤트를 전파 WebViewMouseEventData 합니다. 내부 논리에 따라 이벤트는 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 코드 간의 interop 통신을 위한 인터페이스입니다.

WebView2의 interop에 대한 자세한 내용은 네이티브 쪽 및 웹 쪽 코드의 Interop을 참조하세요.

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