Unity编辑器 - 输入控件聚焦问题
Unity编辑器整理 - 输入控件聚焦问题
EditorGUI的输入控件在聚焦后,如果在其他地方改变值,聚焦的框不会更新,而且无法取消聚焦,如下图:
在代码中取消控件的聚焦
取消聚焦的“时机”需要看具体情况,比如上图可以在按下“删除最后一个字符”按钮时取消,也可以通过按下ESC键或者的鼠标移出面板是取消聚焦。。。
代码:
text = EditorGUILayout.TextField("text:", text);
if (GUILayout.Button("删最后一个字符")) {
if (!string.IsNullOrEmpty(text)&& text.Length>0) {
text = text.Substring(0, text.Length - 1);
}
//在需要时取消聚焦
GUI.FocusControl(null);
Repaint();
}
text = EditorGUILayout.TextField("text:", text);
var e = Event.current;
//鼠标离开窗口时,
if (e.type == EventType.MouseLeaveWindow ) {
GUI.FocusControl(null);//
}
//按esc键退出聚焦
if(e.keyCode == KeyCode.Escape)
{
GUI.FocusControl(null);//
Repaint();
}
多个控件,有复杂交互情况时,需要为控件指定一个聚焦名字,灵活操作聚焦逻辑,代码:
GUI.SetNextControlName("text:"); //指定下一控件用于控制聚焦的名字
text = EditorGUILayout.TextField("text:", text);
var rect = GUILayoutUtility.GetLastRect();
var e = Event.current;
if (e.type == EventType.MouseDown //当鼠标点击时
&& !rect.Contains(e.mousePosition) //鼠标不在控件范围内时
&& GUI.GetNameOfFocusedControl() == "text:") { //判断控件处于聚焦状态时
GUI.FocusControl(null);
}
另外也可以使用GUIUtility.keboardControl获取当前键盘聚焦的控件id.
Unity编辑器 - 输入控件聚焦问题的更多相关文章
- Unity编辑器 - TreeView控件笔记
用起来有一些规则,写个简单的案例以备查阅: using System.Collections.Generic; using UnityEditor.IMGUI.Controls; using Unit ...
- C# 控件聚焦
/********************************************************************** * C# 控件聚焦 * 说明: * 做界面经常需要将ta ...
- 深入浅出ExtJS 第四章 表单与输入控件
4.1 制作表单 var form = new Ext.form.FormPanel({ title:'form', defaultType:'textfield', buttonAlign:'cen ...
- UI输入控件
--UI输入控件 -- 输入控件 cc.uii.UIInput.new(table) --[[ 参数 table{ image 输入框图像,可以为图片名或者display.newScale9Sprit ...
- Android 高仿微信支付密码输入控件
像微信支付密码控件,在app中是一个多么司空见惯的功能.最近,项目需要这个功能,于是乎就实现这个功能. 老样子,投篮需要找准角度,变成需要理清思路.对于这个"小而美"的控件,我们思 ...
- ExtJS4.2学习(17)表单基本输入控件Ext.form.Field(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-12-11/189.html --------------- ...
- JS数量输入控件
JS数量输入控件 很早看到kissy首页 有数量输入控件,就随便看了下功能 感觉也不怎么难 所以也就试着自己也做了一个, 当然基本的功能和他们的一样,只是用了自己的编码思想来解决这么一个问题.特此给大 ...
- Kettle文本文件输出和输入控件使用中,换行符导致的问题处理
1.如下图通过输入控件从数据库读取数据然后生成TXT文本文件,TXT文件生成原则是每一条数据生成一行数据,第二条数据换行保存 2.如下图所示,使用文本文件输入控件读入上图生成的文件,文件读入原则是按行 ...
- Android输入控件详解
输入控件 输入控件是您的应用用户界面中的交互式组件.Android 提供了多种可在 UI 中使用的控件,如按钮.文本字段.定位栏.复选框.缩放按钮.切换按钮等. 向 UI 中添加输入控件与向 XML ...
随机推荐
- CUDA 深入浅出谈[转]
CUDA 深入浅出谈 “CUDA 是 NVIDIA 的 GPGPU 模型,它使用 C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去学习特定 ...
- sqoop 1.99.7 安装及配置
一 下载sqoop 1.99.7 http://mirror.bit.edu.cn/apache/sqoop/1.99.7/ 二 解压安装文件 三 配置Sqoop 环境变量 最后把mysql的驱动j ...
- Spring 通过XML配置装配Bean
使用XML装配Bean需要定义对于的XML,需要引入对应的XML模式(XSD)文件,这些文件会定义配置Spring Bean的一些元素,简单的配置如下: <?xml version=" ...
- 【题解】洛谷P1074 [NOIP2009TG] 靶形数独(DFS+剪枝)
洛谷P1074:https://www.luogu.org/problemnew/show/P1074 思路 这道题一看就是DFS 打一个分数表方便后面算分 我用x y z数组分别表示行 列 宫 是否 ...
- MySql第几行到第几行语句
1.查询第一行记录: select * from table limit 1 2.查询第n行到第m行记录 select * from table1 limit n-1,m-n; SELECT * FR ...
- HTML的块状、内联、内联块状元素的特点
元素分类及特点: 1.块级元素: 在html中<div>. <p>.<h1>.<form>.<ul> 和 <li>就是块级元素. ...
- Kubernetes资料收集
官方文档 https://kubernetes.io/docs/home/?path=users&persona=app-developer&level=foundational 视频 ...
- python 创建虚拟环境
创建一个文件夹:mkdir tf_env 进入到文件夹内:cd tf_env 创建虚拟环境:python3 -m venv tensorflow-dev 激活虚拟环境:source tensorflo ...
- Ubantu 更新时间方法
1.首先查看时区: swfsadmin@swfsubuntu:~$ date -RTue, 17 Dec 2013 18:23:01 +0800 如果要修改时区,执行sudo tzselect 2.选 ...
- HTML5中的拖拽与拖放(drag&&drop)
1.drag 当拖动某个元素时,将会依次触发下列事件: 1)dragstart:按下鼠标键并开始移动鼠标时,会触发该事件 2)drag:dragstart触发后,随即便触发drag事件,而且在元素被拖 ...