Для моего мобильного приложения Unity мне нужен элемент веб-просмотра и использование плагина UniWebView.Как показано в коде ниже, я написал скрипт для динамической загрузки строки html.В моем приложении содержащая сцена будет загружаться много раз, в зависимости от взаимодействия с пользователем.
В редакторе и на iOS она работает как положено.На Android веб-представление отображается для первой загрузки сцены после запуска приложения.Но более поздние перезагрузки иногда работают, а иногда терпят неудачу, произвольно окрашивая только белую область.Это происходит, несмотря на то, что загрузочный счетчик работает, так что это просто ошибка визуализации.
Сценарий прилагается ниже.Я поставил сценарий на простой игровой объект панели, который используется только для определения области экрана.
Есть идеи, как мне это решить?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class YouTubePlayer : MonoBehaviour
{
private UniWebView uniWebView;
public void Start()
{
uniWebView = GetComponent<UniWebView>();
if (uniWebView == null)
{
Debug.Log("YOUTUBE PLAYER: Adding uniwebview Component");
uniWebView = gameObject.AddComponent<UniWebView>();
}
uniWebView.OnPageStarted += (view, url) =>
{
Debug.Log("YOUTUBE PLAYER: OnPageStarted with url: " + url);
};
uniWebView.OnPageFinished += (view, statusCode, url) =>
{
Debug.Log("YOUTUBE PLAYER: OnPageFinished with status code: " + statusCode);
};
uniWebView.OnPageErrorReceived += (UniWebView webView, int errorCode, string errorMessage) =>
{
Debug.Log("YOUTUBE PLAYER: OnPageErrorReceived errCode: " + errorCode
+ "\n\terrMessage: " + errorMessage);
};
uniWebView.SetShowSpinnerWhileLoading(true);
uniWebView.ReferenceRectTransform = gameObject.GetComponent<RectTransform>();
uniWebView.LoadHTMLString(YoutubeHTMLString, "https://www.youtube.com/");
uniWebView.Show(true);
}
private static string YoutubeHTMLString =
@"<html>
<head></head>
<body style=""margin:0\"">
<iframe width = ""100%"" height=""100%""
src=""https://www.youtube.com/embed/Ccj_H__4KGQ"" frameborder=""0""
allow=""autoplay; encrypted-media"" allowfullscreen>
</iframe>
</body>
</html>";
}