Karma Gerçeklik WebView eklentisi için API Başvurusu (Önizleme)

Önemli

WebView2 kullanılabilir olmaya devam eder. Ancak HoloLens'te WebView2 desteği sona erer (hata düzeltmeleri, içerik güncelleştirmeleri veya teknik destek yoktur) ve bu nedenle uygulamaların uzun bir süre çalışmaya devam edeceğine dair hiçbir garanti vermeyeceğiz.

Unity için Microsoft Karma Gerçeklik WebView eklentisi, WebView2 işlevselliğinin HoloLens 2 uygulamanızla tümleştirilmesini sağlar. Unity için bu WebView eklentisi, WebView2 denetimini sarmalayarak, işlemeyi otomatik olarak işleyerek ve girişi otomatik olarak WebView2 denetimine yönlendirerek WebView2 işlevselliğinin HoloLens 2 uygulamanızla tümleştirilmesini kolaylaştırır.

Bu eklenti ayrıca Unity ile WebView2 arasındaki birlikte çalışma özelliğini yöneterek javascript ile Unity arasında iletiler ve olaylar aracılığıyla iletişimi etkinleştirir.

Bu eklenti, CoreWebView2 aracılığıyla kullanılabilen işlevlerin bir alt kümesini kullanıma sunar.

HoloLens 2'deki WebView2 ve Unity için WebView eklentisi önizleme aşamasındadır ve genel kullanıma sunulmadan önce değiştirilebilir. WebView2 Önizlemesi, Microsoft HoloLens için Insider Preview'da kullanılabilir. Bu önizlemeye erişmek için Windows Insider Programı'na kayıtlı olmanız gerekir; Bkz . Microsoft HoloLens için Insider önizlemesinde Insider derlemelerini almaya başlama.

WebView2 ve WebView eklentisi yalnızca Windows 11 güncelleştirmesini çalıştıran HoloLens 2 cihazlarında desteklenir. Daha fazla bilgi için bkz . HoloLens 2'yi güncelleştirme.

Unity için WebView eklentisini kullanmaya başlama hakkında bilgi için bkz . HoloLens 2 Unity uygulamalarında WebView2'yi kullanmaya başlama.

IWebView Arabirimi

Unity için WebView eklentisinin ana arabirimi.

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 Temsilcileri

public delegate void WebView_OnNavigated(string path);

public delegate void WebView_OnCanGoForwardUpdated(bool value);

IWebView Olayları

IWebView.Navigated Olayı

CoreWebView2.SourceChanged Olayı WebView tarafından tetiklendiğinde tetiklenen olay .

Örnek
webView.Navigated += OnNavigated;

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

IWebView.WindowCloseRequested Olayı

CoreWebView2.WindowCloseRequested Olayı WebView tarafından tetiklendiğinde tetiklenen olay .

Örnek
webView.WindowCloseRequested += OnWindowCloseRequested;

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

IWebView Özellikleri

IWebView.GameObject Özelliği

Sahnedeki WebView eklentisini temsil eden üst düzey Unity GameObject varlığı. Salt okunur.

IWebView.Texture Özelliği

WebView içeriğinin işlendiği 2B Unity Texture2D nesnesi. Salt okunur

IWebView.Width Özelliği

WebView dokusunun genişliği ve WebView denetimi. Unity sahnesindeki örneğin işlenmiş boyutları IWebView tarafından GameObjectdenetlenmektedir.

IWebView.Height Özelliği

WebView dokusunun ve WebView denetiminin yüksekliği. Unity sahnesindeki örneğin işlenmiş boyutları IWebView tarafından GameObjectdenetlenmektedir.

IWebView.Page Özelliği

Şu anda yüklü olan veya WebView denetimi tarafından gidilmekte olan URI. Salt okunur

IWebView.OnceCreated Özelliği

WebView denetimi tam olarak örneklendiğinde ve kullanıma hazır olduğunda görev yürütülür. Salt okunur

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

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

    Load(initialURL);

}, TaskScheduler.FromCurrentSynchronizationContext());

IWebView Yöntemleri

IWebView.Resize Yöntemi

WebView2 denetiminin ve Textureboyutunu değiştirir. Ayrıntılar için temel alınan CoreWebView2Controller.Bounds Özelliğine bakın.

Unity sahnesindeki örneğin işlenmiş boyutları IWebView tarafından GameObjectdenetlenmektedir.

Örnek
Resize(600, 400);

IWebView.Load Yöntemi

Belirtilen URI'ye gider. Ayrıntılar için temel alınan CoreWebView2.Navigate Yöntemine bakın.

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

IWebView.Dispose Yöntemi

Bir IWebView örnekle ilgili bellek, tanıtıcılar ve geri çağırmalar gibi kaynakları temizler.

İç belleğin düzgün bir şekilde boşaltıldığından emin olmak için belirli IWebView bir örnekle işiniz bittiğinde bu yöntemi çağırabilirsiniz. Çağrıldıktan IWebView sonra Dispose örnek geçersiz olarak kabul edilmelidir.

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

IWithMouseEvents Arabirimi

Unity için WebView eklentisi için fare ve işaretçi girişini destekler.

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

IWithMouseEvents Yöntemleri

IWithMouseEvents.MouseEvent Yöntemi

Bir WebViewMouseEventData olayı WebView denetimine yayılır. İç mantığa bağlı olarak, olay CoreWebView2Controller.SendMouseInput Yöntemi veya CoreWebView2Controller.SendPointerInput Yöntemi çağrılır.

Örnek
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 Arabirimi

Unity kodu ile barındırılan WebView kodu arasında birlikte çalışma iletişimi için arabirim.

WebView2'de birlikte çalışma hakkında daha fazla bilgi edinmek için bkz . Yerel ve web tarafı kod birlikte çalışma.

public interface IWithPostMessage : IWebView
{
    event WebView_OnPostMessage MessageReceived;

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

IWithPostMessage Temsilcileri

public delegate void WebView_OnPostMessage(string message);

IWithPostMessage Olayları

IWithPostMessage.MessageReceived Yöntemi

WebView denetiminden yeni bir JavaScript iletisi alındığında tetikleniyor. Ayrıntılar için temel alınan CoreWebView2.WebMessageReceived olayına bakın.

Örnek
(webView as IWithPostMessage).MessageReceived += OnMessageReceived;

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

IWithPostMessage Yöntemleri

IWithPostMessage.PostMessage Yöntemi

WebView denetimindeki barındırılan içeriğe bir JavaScript iletisi gönderir. Parametresine isJSON bağlı olarak, bu durum CoreWebView2.PostWebMessageAsString Yönteminin veya CoreWebView2.PostWebMessageAsJson Yönteminin çağrılmasıyla sonuçlanır.

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

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

IWithBrowserHistory Arabirimi

Önceki bir sayfaya gitme gibi tarayıcı geçmişiyle ilgili işlevleri işler.

public interface IWithBrowserHistory : IWebView
{
    event WebView_OnCanGoForwardUpdated CanGoForwardUpdated;

    event WebView_OnCanGoBackUpdated CanGoBackUpdated;

    void GoBack();

    void GoForward();
}

IWithBrowserHistory Temsilcileri

public delegate void WebView_OnCanGoBackUpdated(bool value);

public delegate void WebView_OnCloseRequested();

IWithBrowserHistory Olayları

IWithBrowserHistory.CanGoForwardUpdated Olayı

Gezinti gerçekleştiğinde tetiklenen. CoreWebView2.CanGoForward Özelliği ise trueolay temsilcisi bir true değer sağlar.

Örnek
(webView as IWithBrowserHistory).CanGoBackUpdated += OnCanGoBack;

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

IWithBrowserHistory.CanGoBackUpdated Olayı

Gezinti gerçekleştiğinde tetiklenen. Olay temsilcisi, CoreWebView2.CanGoBack Özelliği ise truebir true değer sağlar.

Örnek
(webView as IWithBrowserHistory).CanGoForwardUpdated += OnCanGoForward;

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

IWithBrowserHistory Yöntemleri

IWithBrowserHistory.GoBack Yöntemi

Önceki sayfaya gider. Ayrıntılar için temel alınan CoreWebView2.GoBack Yöntemine bakın.

Örnek
(webView as IWithBrowserHistory).GoBack();

IWithBrowserHistory.GoForward Yöntemi

Sonraki sayfaya gider. Ayrıntılar için temel alınan CoreWebView2.GoForward Yöntemine bakın.

Örnek
(webView as IWithBrowserHistory).GoForward();