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 ...
随机推荐
- 一款css3的标签动画效果
/*响应式设计,动画效果需引入animate.min.css库*/ <div class="index_tag"> <div class="rowFlu ...
- 修改office文档修改日期
修改“创建日期”可采用如下方法: 首先把系统日期调整到您所希望的时间,然后到MS-DOS方式下,对该文件输入如下命令:COPY /B filename +,, (一个加号.两个逗号),当询问您是否确认 ...
- 系统优化怎么做-JVM优化之开篇
大家好,这里是「聊聊系统优化 」,并在下列地址同步更新 博客园:http://www.cnblogs.com/changsong/ 知乎专栏:https://zhuanlan.zhihu.com/yo ...
- Python 学习笔记(十)Python集合(一)
回顾 int/float/str/list/tuple/dict 整数型和浮点型是不可变的,不是序列 字符串是不可变的,是序列 列表是可变的,是序列 元组是不可变的,是序列 字典是可变得,但不是序列 ...
- 【HDOJ 2888】Check Corners(裸二维RMQ)
Problem Description Paul draw a big m*n matrix A last month, whose entries Ai,j are all integer numb ...
- BZOJ1023: [SHOI2008]cactus仙人掌图(仙人掌dp)
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3467 Solved: 1438[Submit][Status][Discuss] Descripti ...
- Kafka 推荐网站
Kafka系列文章 [Kafka设计解析(一)- Kafka背景及架构介绍](http://www.jasongj.com/2015/03/10/KafkaColumn1/) [Kafka设计解析(二 ...
- LCD驱动程序
学习目标:熟悉TFT LCD的概念,分层驱动工作原理和程序编写. 一.LCD 概念 1. 显示器数据组织格式 1)一幅图像成为一帧,每帧由多行组成,每行由多个像素组成.每个像素的颜色由若干位表示,对 ...
- ruby中的三目操作符和include?操作
三目操作符:口?口:口 问号前面的是布尔型的判断,true的话执行第二个方块的语句,false的话执行第三个方块的语句例如:value =(nil ? 0 : 1)p value=>1 .inc ...
- React 源码中的依赖注入方法
一.前言 依赖注入(Dependency Injection)这个概念的兴起已经有很长时间了,把这个概念融入到框架中达到出神入化境地的,非Spring莫属.然而在前端领域,似乎很少会提到这个概念,难道 ...