Problemas de UE4 encontrados al usar el complemento Webbrowser y las soluciones

1. No se puede reproducir el video de la página web, esto se debe a que el cef3 que viene con el WebBrowser de UE4 es la versión 3071, que no admite transmisiones en vivo como h264 de forma predeterminada, lo que resulta en la imposibilidad de reproducir transmisiones en vivo en la web.

Solución: El primer método es recompilar el código fuente de cef para admitir H.264 y luego reemplazar los archivos relevantes en el directorio de instalación de UE4. Hay tutoriales en Internet para buscar por sí mismo. La segunda forma es encontrar directamente el complemento modificado, Taobao

2. Oculte el control deslizante de la página web

Solución: use la función ExecuteJavascript del navegador web para ejecutar el código js. El significado aproximado de este código es establecer la longitud y el ancho del control deslizante en 0 para ocultar los elementos deslizantes. Cabe señalar que el código js debe ser completamente cargado antes de la página web Ejecute el código js correctamente, pero no hay una devolución de llamada en el lado de la UE sobre la carga completa de la página web, por lo que debe agregar un retraso antes de usar esta función y probar el retraso específico usted mismo

var style = document.createElement('style');style.type = 'text/css';style.innerHTML = '::-webkit-scrollbar {width: 0px;height: 0px;}';document.getElementsByTagName('head')[0].appendChild(style);

3. La página web abierta con el navegador web no puede ingresar chino en el cuadro de edición

Solución: Modifique el código fuente y busque la función RebuildWidget en WebViewBrowser.cpp para modificarlo

//支持中文输入
ITextInputMethodSystem* const TextInputMethodSystem = FSlateApplication::Get().GetTextInputMethodSystem();
WebViewBrowserWidget->BindInputMethodSystem(TextInputMethodSystem);

4. No se admite el deslizamiento hacia arriba y hacia abajo en la pantalla táctil, porque el método OnTouchMoved no se reescribe en la clase WebViewBrowserViewport

Solución: Reescriba este método e implemente la lógica. Otro problema es que cuando se mueve en la pantalla táctil, las funciones OnMouseButtonDown y OnTouchMove se activarán al mismo tiempo. La lógica de deslizamiento en la página web y la lógica de hacer clic en el botón activarse al mismo tiempo, por lo que es necesario hacer un juicio en OnMouseButtonUp para evitar que se active el evento de botón.

virtual FReply OnTouchMoved(const FGeometry& MyGeometry, const FPointerEvent& InTouchEvent) override;

FVector2D clickpos;

clickpos = MouseEvent.GetScreenSpacePosition();

FVector2D vec = MouseEvent.GetScreenSpacePosition() - clickpos;
	if (!(FMath::Abs(vec.Y) < 1))
	{
		return FReply::Handled();
	}

FReply FWebViewBrowserViewport::OnTouchMoved(const FGeometry& MyGeometry, const FPointerEvent& InTouchEvent)
{
	FVector2D vec = InTouchEvent.GetCursorDelta();
	FString str = FString::Printf(TEXT("window.scrollBy(0,%f);"), vec.Y * -1);
	WebViewBrowserWindow->ExecuteJavascript(str);
	return FReply::Handled();
}

Supongo que te gusta

Origin blog.csdn.net/qq_41410054/article/details/131686087
Recomendado
Clasificación