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 ...
随机推荐
- update会锁表吗?
update会锁表吗? 两种情况: 1.带索引 2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开启了自动提交事务. ...
- TCP Three-way Handshake
TCP Connection Management Out-of-Order and Duplication(复制) Problem Old segment from previous connect ...
- 淘宝前端框架kissyui
http://docs.kissyui.com/1.4/docs/html/guideline/why-kissy.html
- 使用 Solr 构建企业级搜索服务器
最近因项目需要一个全文搜索引擎服务, 在考察了Lucene及Solr后,我们选择了Solr. 本文简要记录了基于Solr搭建一个企业搜索服务器的过程.网上的资料太多千篇一律,也可能版本不同,总之在参照 ...
- NLP语言模型
语言模型: I. 基本思想 区别于其他大多数检索模型从查询到文档(即给定用户查询,如何找出相关的文档), 语言模型由文档到查询,即为每个文档建立不同的语言模型,判断由文档生成用户查 询的可能性有多大, ...
- 二、HDFS 架构
源自:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html HDFS has a m ...
- (Nagios)-check_openmanage[Dell]
Nagios->check_openmanage[Dell R7*] 2014年11月13日 下午 07:44 需求介绍: 透过Nagios监控Dell R7系列服务器硬件状态 环境信息: ...
- JFinal DB.tx()事务回滚及lambda表达式应用
JFinal DB.tx()事务回滚 在要往数据库操作多条数据时,就需要用到事务,JFinal中有封装好的事务应用 写法: Db.tx(new IAtom(){ @Override public bo ...
- Spring MVC 的核心应用-1
使用Spring MVC实现登录.注销 配置文件applicationcontext-jdbc.xml <?xml version="1.0" encoding=" ...
- 用Python代码实现微信跳一跳作弊器
最近随着微信版本的更新,在进入界面有个跳一跳的小游戏,在网上看到技术篇教你用Python来玩微信跳一跳 ( 转载自 " 工科给事中的技术博客 " ) 本文旨在总结,技术全靠大神完成 ...