注:本文以Godot 4.0 为基准,可能其他版本也能参考。

这是我用C#写项目时发现的,可能和gdscript使用者遇到的问题有一定区别。

如果你用Godot制作的游戏无法响应鼠标点击等输入事件,请检查下面这几种可能性,说不定能解决你的问题:

1 绑定gui_input信号的节点是否是Control? 绑定pressed信号的节点是否是Button?

当你使用gdscript时,可能用脚本注册了gui_input信号,此时需要检查是否是Control,因为只有这个类型的实例有这个信号。

如果你注册的是pressed信号,那么需要检查类型是不是Button,不像某些平台,Godot的控件并不都有封装好的点击的信号。

如果你并没有用上述信号,而是重写了_Input(),则不用考虑此问题,也许应该看下面的项目。

因为只要是Node的实例,就可以_Input()以接受全局输入事件。

2 是否使用了Viewport/SubViewport?

如果你的游戏有部分画面来自另一个视口(Viewport),

比如把另一个场景的物体显示在画面上侧显示血条之类的信息,

那么这个新的视口无法直接收到输入事件,即使_Input()也不会有响应。

如果你需要它响应_Input(),那么可以用代码转发事件,我试过在SubViewport上添加一个脚本,重写_Input()后直接将取得的事件参数转发给目标节点,再由它广播到它的子节点,广播时调用子节点的_Input()函数即可。当然,SubViewport直接广播给目标节点的子节点也是可行的。

如果你需要它通过gui_input信号之类的信号起作用,我目前没有实践经验,也许信号也是可以转发的。

tips:转发后,鼠标事件可能需要考虑坐标系转换。(我不确定需不需要转,因为我转发的是键盘输入)

3 是否有遮挡物?

这是我今天遇到的问题,有"不明遮挡物"挡住了我的鼠标输入。

这次经历告诉我,需要特别检查是否有ReferenceRect在你需要操控的控件上覆盖,因为它是一种Control,即使你勾选了EditorOnly,它仍然会遮挡住你的鼠标输入,我认为EditorOnly只会让方框看不见,但是它仍然有控件的作用,建议用代码或手动将其在场景树上隐藏(GetNode<CanvasItem>("RefRect").Visable=false),这样才不会遮挡输入。

这个问题只会影响gui_input信号(在C#中称GuiInput事件)。

Godot无法响应鼠标点击等输入事件时,检查这些内容的更多相关文章

  1. 在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法

    在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法 [MXDRAW CAD控件文档] 下面帮助的完整例子,在控件安装目录的Sample\Ie\iedemo.htm中. 1.      主要用到 ...

  2. QTP鼠标点击和浏览器事件的动态切换

    今天在群里有人问到一个问题,我觉得应该会有很多人会碰到,今天根据自己的思路把这个解决方案整理出来,供自己和大家参考 需求描述: 当输入一个身份证号码的时候,这个号码所对应的数据会被加载到所属的省和市的 ...

  3. Unity3D鼠标点击物体产生事件

    如果需要处理鼠标点击物体的情况, 可以当数据接触物体时,鼠标手势改变,然后点击后和NPC产生对话等: using UnityEngine; using System.Collections; publ ...

  4. [python] 1、python鼠标点击、移动事件应用——写一个自动下载百度音乐的程序

    1.问题描述: 最近百度总爱做一些破坏用户信任度的事——文库金币变券.网盘限速,吓得我赶紧想办法把存在百度云音乐中的歌曲下载到本地. http://yinyueyun.baidu.com/ 可问题是云 ...

  5. android map高德地图显示多个点,并且每个marker点可以响应鼠标点击事件,处理跳转页面

    定义一个数组,然后将要显示的markers放进数组里面,让后循环每个marke对象,赋予监听事件,在监听事件里面写其它需要的功能: js举例: var arr = new Arry(); var ma ...

  6. Electron 设置 -webkit-app-region 后无法响应鼠标点击事件的解决方式

    参考博客:https://blog.csdn.net/qq_20264891/article/details/87721163

  7. 用js捕捉鼠标连续点击三次事件怎么实现啊

    var count = 0, timer; document.onclick = function(){ if(count < 2){ if(timer){ clearTimeout(timer ...

  8. 2019-11-29-WPF-非客户区的触摸和鼠标点击响应

    原文:2019-11-29-WPF-非客户区的触摸和鼠标点击响应 title author date CreateTime categories WPF 非客户区的触摸和鼠标点击响应 lindexi ...

  9. 2019-8-8-WPF-非客户区的触摸和鼠标点击响应

    title author date CreateTime categories WPF 非客户区的触摸和鼠标点击响应 lindexi 2019-08-08 16:48:31 +0800 2019-07 ...

  10. CSS鼠标点击式变化图片透明度

    今天分享前端代码主题:jequery控制css图片透明度 很多时候在网站图片处理上需要实现一些辅助效果,比如鼠标在图片上滑动时或点击时改变图片颜色(变灰或者其他),其实一个简单的办法就是改变图片css ...

随机推荐

  1. 2021-02-27:假设一个固定大小为W的窗口,依次划过arr,返回每一次滑出状况的最大值。例如,arr = [4,3,5,4,3,3,6,7], W = 3。返回:[5,5,5,4,6,7]。

    2021-02-27:假设一个固定大小为W的窗口,依次划过arr,返回每一次滑出状况的最大值.例如,arr = [4,3,5,4,3,3,6,7], W = 3.返回:[5,5,5,4,6,7]. 福 ...

  2. 2021-04-18:给定一个二维数组matrix,里面的值不是1就是0,上、下、左、右相邻的1认为是一片岛,返回matrix中岛的数量。

    2021-04-18:给定一个二维数组matrix,里面的值不是1就是0,上.下.左.右相邻的1认为是一片岛,返回matrix中岛的数量. 福大大 答案2021-04-18: 并查集. 代码用gola ...

  3. 2021-08-31:去除重复字母。给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。力扣316。

    2021-08-31:去除重复字母.给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次.需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置).力扣316. 福大大 答案 ...

  4. 安装Visio 2013与原本的office冲突的最终解决方案

    一. 下载office visio 2013 这个直接去网上下载一个安装包解压即可 或者直接云盘下载 https://pan.baidu.com/s/1jWGFoHAjegBBvyrL1rq4DQ 提 ...

  5. Python连接es笔记一之连接与查询es

    本文首发于公众号:Hunter后端 原文链接:Python连接es笔记一之连接与查询es 有几种方式在 Python 中配置与 es 的连接,最简单最有用的方法就是定义一个默认的连接,如果系统不是需要 ...

  6. 如何在前端应用中合并多个 Excel 工作簿

    本文由葡萄城技术团队于博客园原创并首发.葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言|问题背景 SpreadJS是纯前端的电子表格控件,可以轻松加载 Excel 工作簿中的数据 ...

  7. python 环境下使用PIP 报错的解决方法

    最近做一个小程序项目,使用djangorestframework,安装restframework 出现错误,安装环境Python2.7:出现错误如下:  "UnicodeEncodeErro ...

  8. 马拉车(manacher) & 回文自动机(PAM)

    补充,PAM 的 a[0]=-1,这一点我每次写都要忘记. 读了徐安矣2023年集训队论文写的,对于差分性质和习题,我会在理解清楚之后再补充.本篇博客仅讨论前两种算法. 首先,马拉车和回文自动机都是处 ...

  9. Linux 线程传递参数

    1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <pthread.h> 4 #include <u ...

  10. 通过模仿学会Python爬虫(一):零基础上手

    好家伙,爬虫来了 爬虫,这玩意,不会怎么办, 诶,先抄一份作业回来 1.别人的爬虫  Python爬虫史上超详细讲解(零基础入门,老年人都看的懂)_ChenBinBini的博客-CSDN博客 # -* ...