原文地址
: https://blog.hidavid.cn/webui-html-mouse-unreal/
- 如何导入UE4的插件Plugins
- UE4如何跟WebBrowser交互,互调传参
- Web穿透设置
- 文末附件
首先到官网下载对应版本的依赖库,把依赖库解压后放置在游戏引擎安装目录的Plugins目录下面:
如我的路径是 ..../Epic Games\UE_4.23\Engine\Plugins\Runtime
打开例程项目,点开插件管理页面,Edit->Plugins,勾选刚加入项目的plugins,如下图:
重启项目才能加载刚勾上的plugins
最后导入demo项目里面的InterfaceHUD
和WebInterface
。
关于导出导入蓝图:先在需要导出的项目中选中需要导出的蓝图文件,点击右键,选择AssetAction->migrate,接着选择需要导入项目的Content路径,注意一定是要Content路径,不然蓝图会出问题。
这样就完成了蓝图的导出导入。
到了这一步就完成了UE4插件的导入。
html加上这段,方便接口调用两个蓝图。创建继承InterfaceHud的蓝图BP_HUD,或者直接使用InterfaceHUD,并在GameMode中设置使用它。
在js中调用下面函数,第一个参数为UE4对应的接口名称,第二个参数(可选)为传入的json参数
ue4("callUE4Func", {"haha":999});
修改HUD的蓝图,在SwitchOnName中加入pin,命名为调用函数的名称
这样就完成了js传数据给UE4,那就能实现调用UE4的函数方法了。
首先在js里定义一个函数,如下所示,setFPS
为函数方法的名称
ue.interface.setFPS = function(fps)
{
// set element text
$("#fpsMeter").text(fps.toFixed(1) + " FPS");
};
然后,同样地在HUD蓝图中,添加CallFunction的蓝图节点,Function
引脚填写js的函数名称setFPS
,Data
引脚为传入的json数据。
Web穿透是WebUI很实用的功能之一,它是通过获取Web元素的透明值来判断是否执行穿透的。
设置方式:
打开蓝图WebInterface
,在Hieracrchy
窗口点选Browser
,在Details
窗口中,有这个属性类别Behavior->Mouse
,其中Enable Transparency
就是用于设置穿透web界面元素的透明度阈值。
WebUI自带一个接口可以接收输入法的中文输入,只需要调用下面的方法即可:
void UC_WebBrowser::EnableIME()
{
if (WebBrowserWidget.IsValid())
{
ITextInputMethodSystem*inputSystem = FSlateApplication::Get().GetTextInputMethodSystem();
if (inputSystem)
{
WebBrowserWidget->UnbindInputMethodSystem();
WebBrowserWidget->BindInputMethodSystem(inputSystem);
}
else
{
UE_LOG(LogTemp, Warning, TEXT("Input Method System is not valid"));
}
}
}
附件地址:https://download.csdn.net/download/killfunst/13103996