首页 > 其他分享 >UE中Widget聚焦导致的问题

UE中Widget聚焦导致的问题

时间:2024-05-08 14:00:25浏览次数:56  
标签:Widget 聚焦 部件 InputMode UE UIOnly 输入

错误信息 “LogPlayerController: Error: InputMode:UIOnly - Attempting to focus Non-Focusable widget SObjectWidget [Widget.cpp(954)]!” 指示你在使用 Unreal Engine 的 UIOnly 输入模式时尝试聚焦一个非可聚焦的小部件。在 UE4 的 InputMode:UIOnly 中,输入(如键盘和鼠标操作)仅被限制在用户界面元素上,但你尝试聚焦的小部件不支持此操作。

解决方法:
检查是否正确设置了可聚焦属性:

确保你尝试聚焦的小部件在其属性中设置为可聚焦。这通常可以在 UMG(Unreal Motion Graphics)的编辑器中设置,或者如果你是在代码中创建小部件,确保使用了支持聚焦的小部件类(如 SButton),并且设定了相应的聚焦相关属性。
修改输入模式:

如果你的意图是让游戏同时处理UI和游戏世界的输入,不应该使用 UIOnly 模式。你可以改用 FInputModeGameAndUI 或 FInputModeGameUIOnly。例如:
FInputModeGameAndUI InputMode;
InputMode.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock);
InputMode.SetWidgetToFocus(SomeWidget->TakeWidget());
GetController()->SetInputMode(InputMode);
使用 SetWidgetToFocus() 确保指定一个可以获得焦点的 UI 元素。
在代码中正确处理聚焦:

当设置输入模式并聚焦到特定小部件时,确保传递的是合适的 SWidget 引用。如果是从 UMG 创建的小部件,使用 TakeWidget() 获取 SWidget 的引用。
审查错误堆栈和相关代码:

检查 Widget.cpp 文件中第 954 行附近的代码,以理解为何发生非可聚焦小部件聚焦尝试。逐步跟踪相关调用获得更深入的理解。
调试和日志:

你可以添加更多日志输出来追踪到底是哪个部分的代码尝试操作了一个非可聚焦的小部件。
以上步骤应该帮助你诊断并解决在 UE4 中遇到的关于输入模式和小部件焦点的问题。

标签:Widget,聚焦,部件,InputMode,UE,UIOnly,输入
From: https://www.cnblogs.com/VisionSeven/p/18179599

相关文章

  • 服务器更换证书后jira无法访问Confluence处理
    服务器更换证书后jira无法访问Confluence处理问题jira和Confluence是用docker搭在一台服务器上的,更换证书后jira无法访问Confluence,如果所示(jira的忘截图了,这个是Confluence的一样的报错)原因:因为Java环境(Jira运行在Java上)不信任你的证书,尤其是如果它是自签名的或由不在J......
  • vue2-事件总线$bus的使用
    作用实现不同组件之间进行通信(非父子关系)。 原理$bus就是vue原型上添加的一个vue实例,用于存储、监听以及触发事件。 实现步骤在main.js文件中注册事件总线Vue.prototype.$bus=newVue();在需要发送信息的组件中发送事件this.$bus.$emit("eventname")//无参......
  • Vue —兼容 Vue 2.0到 Vue 3.0 的注意事项
    Vue3与Vue2之间存在一些重要的变化和改进,因此在进行兼容性处理时需要注意一些关键点。1.CompositionAPIVue3引入了CompositionAPI,与Vue2的OptionsAPI不同。如果您在Vue2中使用了OptionsAPI,可以继续使用,但建议尝试使用CompositionAPI,因为它提供了更好......
  • vue多页面应用
    多页面应用本身和单页面应用没什么差别,无非是多了几个入口点。入口点多的话,还可以写个函数扫描路径取添加入口点。比较让人好奇的是路径的问题。我们要开发的时候要体现目录层级接口,所以入口文件是一层套一层的。但是部署后访问路径应该很短才行,最好是顶级路径。但这又只能改目......
  • 【vue3入门】-【0】前言
    本人是一名四年的软件测试人员,想努力向测试开发方向发展,因此在学习的道路上不停在探索。软件测试所需要的知识面太过庞大,但感觉好的测试开发都是会写前端的,也算是在模仿前辈们的脚步前进,希望不会让自己太受打击了,哈哈哈。对于前端,其实是断断续续有在接触,包括html、css、js,但是苦......
  • 【vue3入门】-【20】组件注册方式
    组件注册方式一个vue组件在使用前需先被“注册”,这样vue才能在渲染模版是找到其对应的实现。组件注册有两种方式:全局注册和局部注册全局注册在最外层注册一次,在最内层组件都能使用main.jsimport{createApp}from'vue'importAppfrom'./App.vue'importHeaderfrom......
  • 【vue3入门】-【21】 组件传递数据
    组件传递数据_Props静态数据传递组件与组件之间不是完全独立的,而是有交集的,那就是组件与组件之间是可以传递数据的传递数据的解决方案就是propsapp.vue<template><!--主要要生效Header中的样式,需要删除main.json中默认的main.css样式--><!--不需要再次引入,可以直接使......
  • 【vue3入门】-【22】 组件事件
    组件事件在组件的模版表达式中,可以直接使用$emit方法触发自定义事件触发自定义事件的目的是组件之间传递数据,通过组件事件可以实现子级传递参数给父级App.vue<template><ComponentEvent/></template><script>importComponentEventfrom"./components/componentEvent.......
  • Vue2进阶语法
    Vue进阶语法【一】v-model修饰符v-model:针对input标签实现数据双向绑定#lazy:等待input框的数据绑定失去焦点之后再变化#number:数字开头,只保留数字,后面的字母不保留;字母开头,都保留#trim:去除首尾的空格<body><divid="app"><h1>v-model进阶</h1><p>普通<......
  • vue - 父子组件生命周期
    vue-父子组件生命周期题目Vue的父组件和子组件生命周期钩子函数执行顺序?Vue的父组件和子组件生命周期钩子函数执行顺序可以归类为以下4部分:加载渲染过程父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子m......