【Unity】Unity编辑器搜索风格输入框
2016-08-30 17:11
281 查看
Unity编辑器搜索风格输入框
参考 Unity 编辑器路径设置输入框[b]效果如下[/b]
没输入的时候
有输入的时候
private GUIStyle TextFieldRoundEdge; private GUIStyle TextFieldRoundEdgeCancelButton; private GUIStyle TextFieldRoundEdgeCancelButtonEmpty; private GUIStyle TransparentTextField; /// <summary> /// 绘制输入框,放在OnGUI函数里 /// </summary> private void DrawInputTextField() { if (TextFieldRoundEdge == null) { TextFieldRoundEdge = new GUIStyle("SearchTextField"); TextFieldRoundEdgeCancelButton = new GUIStyle("SearchCancelButton"); TextFieldRoundEdgeCancelButtonEmpty = new GUIStyle("SearchCancelButtonEmpty"); TransparentTextField = new GUIStyle(EditorStyles.whiteLabel); TransparentTextField.normal.textColor = EditorStyles.textField.normal.textColor; } //获取当前输入框的Rect(位置大小) Rect position = EditorGUILayout.GetControlRect(); //设置圆角style的GUIStyle GUIStyle textFieldRoundEdge = TextFieldRoundEdge; //设置输入框的GUIStyle为透明,所以看到的“输入框”是TextFieldRoundEdge的风格 GUIStyle transparentTextField = TransparentTextField; //选择取消按钮(x)的GUIStyle GUIStyle gUIStyle = (m_InputSearchText != "") ? TextFieldRoundEdgeCancelButton : TextFieldRoundEdgeCancelButtonEmpty; //输入框的水平位置向左移动取消按钮宽度的距离 position.width -= gUIStyle.fixedWidth; //如果面板重绘 if (Event.current.type == EventType.Repaint) { //根据是否是专业版来选取颜色 GUI.contentColor = (EditorGUIUtility.isProSkin ? Color.black : new Color(0f, 0f, 0f, 0.5f)); //当没有输入的时候提示“请输入” if (string.IsNullOrEmpty(m_InputSearchText)) { textFieldRoundEdge.Draw(position, new GUIContent("请输入"), 0); } else { textFieldRoundEdge.Draw(position, new GUIContent(""), 0); } //因为是“全局变量”,用完要重置回来 GUI.contentColor = Color.white; } Rect rect = position; //为了空出左边那个放大镜的位置 float num = textFieldRoundEdge.CalcSize(new GUIContent("")).x - 2f; rect.width -= num; rect.x += num; rect.y += 1f;//为了和后面的style对其 m_InputSearchText = EditorGUI.TextField(rect, m_InputSearchText, transparentTextField); //绘制取消按钮,位置要在输入框右边 position.x += position.width; position.width = gUIStyle.fixedWidth; position.height = gUIStyle.fixedHeight; if (GUI.Button(position, GUIContent.none, gUIStyle) && m_InputSearchText != "") { m_InputSearchText = ""; //用户是否做了输入 GUI.changed = true; //把焦点移开输入框 GUIUtility.keyboardControl = 0; } }
相关文章推荐
- Unity 编辑器路径设置输入框
- Unity编辑器开发:官方风格的Table控件
- Unity编辑器扩展详解
- (转)Unity笔记之编辑器(CurveField、DoubleField、EnumMaskField、EnumPopup) ... ...
- 19_Shell语言―――VIM编辑器基础知识二之编辑命令、可视化、翻屏、分屏和文本搜索功能
- Lua------------------改善Unity编辑器对Lua文件的支持
- Unity编辑器--快捷键设置gameObject激活隐藏
- unity之动画编辑器
- Unity 自定义 编辑器 添加提示框
- Unity 编辑器 Inspector面板枚举
- unity3D游戏开发二之unity编辑器一
- Unity JSON文件的写入(序列化)与读取(反序列化)、以及自定义JSON编辑器
- 输入框(text)跟搜索按钮(submit)竟然对不齐!解决方法如下:
- Unity 编辑器中获取GameView的分辨率
- Unity 曲线编辑器说明
- unity3D游戏开发二之unity编辑器一
- Unity 3D - 编辑器扩展之列出Prefab使用的资源
- Unity 编辑器 leak
- Unity脚本与编辑器
- 让Unity的js编辑器SciTEG永久支持中文