Problèmes UE4 rencontrés lors de l'utilisation du plug-in Webbrowser et des solutions

1. Impossible de lire la vidéo de la page Web, car le cef3 fourni avec le WebBrowser d'UE4 est la version 3071, qui ne prend pas en charge les flux en direct tels que h264 par défaut, ce qui entraîne l'impossibilité de lire les flux en direct sur le Web.

Solution : la première méthode consiste à recompiler le code source cef pour prendre en charge H.264, puis à remplacer les fichiers pertinents dans le répertoire d'installation UE4. Il existe des tutoriels sur Internet pour rechercher par vous-même. La deuxième façon est de trouver directement le plug-in modifié, Taobao

2. Masquez le curseur de la page Web

Solution : utilisez la fonction ExecuteJavascript du navigateur Web pour exécuter le code js. La signification approximative de ce code est de définir la longueur et la largeur du curseur sur 0 pour masquer les éléments coulissants. Il convient de noter que le code js doit être entièrement chargé avant la page Web Exécutez le code js correctement, mais il n'y a pas de rappel côté UE concernant le chargement complet de la page Web, vous devez donc ajouter un délai avant d'utiliser cette fonction et tester le délai spécifique par vous-même

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 page Web ouverte avec le navigateur Web ne peut pas saisir le chinois dans la zone d'édition

Solution : modifiez le code source et recherchez la fonction RebuildWidget dans WebViewBrowser.cpp pour le modifier.

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

4. Le glissement vers le haut et vers le bas n'est pas pris en charge sur l'écran tactile, car la méthode OnTouchMoved n'est pas réécrite dans la classe WebViewBrowserViewport

Solution : Réécrivez cette méthode et implémentez la logique. Un autre problème est que lorsque vous vous déplacez sur l'écran tactile, les fonctions OnMouseButtonDown et OnTouchMove seront déclenchées en même temps. La logique du glissement dans la page Web et la logique du clic sur le bouton seront être déclenché en même temps, il est donc nécessaire de porter un jugement dans OnMouseButtonUp pour empêcher le déclenchement de l'événement de bouton.

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

Je suppose que tu aimes

Origine blog.csdn.net/qq_41410054/article/details/131686087
conseillé
Classement