关闭

Unity 编辑器路径设置输入框

标签: unity编辑器
3425人阅读 评论(0) 收藏 举报
分类:

看到一个不错的编辑器路径设置输入框,前后都有文本提示,输入只在中间进行输入。效果如下所示:

默认的时候:
默认
输入的时候:
输入

代码如下:

using UnityEditor;
using UnityEngine;

public class TestWindow : EditorWindow
{
    [MenuItem("Tools/Test")]
    static void Init()
    {
        var window = EditorWindow.GetWindow<TestWindow>();
        window.titleContent.text = "路径设置";
        window.Show();
    }

    private string m_Path;

    void OnGUI()
    {
        EditorGUILayout.LabelField("Path:");
        m_Path = RelativeAssetPathTextField(m_Path, ".prefab");
    }

    public static GUIStyle TextFieldRoundEdge;
    public static GUIStyle TextFieldRoundEdgeCancelButton;
    public static GUIStyle TextFieldRoundEdgeCancelButtonEmpty;
    public static GUIStyle TransparentTextField;

    private string RelativeAssetPathTextField(string path, string extension)
    {
        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 position = EditorGUILayout.GetControlRect();
        GUIStyle textFieldRoundEdge = TextFieldRoundEdge;
        GUIStyle transparentTextField = TransparentTextField;
        GUIStyle gUIStyle = (path != "") ? 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));
            textFieldRoundEdge.Draw(position, new GUIContent("Assets/"), 0);
            GUI.contentColor = Color.white;
        }
        Rect rect = position;
        float num = textFieldRoundEdge.CalcSize(new GUIContent("Assets/")).x - 2f;
        rect.x += num;
        rect.y += 1f;
        rect.width -= num;
        EditorGUI.BeginChangeCheck();
        path = EditorGUI.TextField(rect, path, transparentTextField);
        if (EditorGUI.EndChangeCheck())
        {
            path = path.Replace('\\', '/');
        }
        if (Event.current.type == EventType.Repaint)
        {
            Rect position2 = rect;
            float num2 = transparentTextField.CalcSize(new GUIContent(path + ".")).x - EditorStyles.whiteLabel.CalcSize(new GUIContent(".")).x; ;
            position2.x += num2;
            position2.width -= num2;
            GUI.contentColor = (EditorGUIUtility.isProSkin ? Color.black : new Color(0f, 0f, 0f, 0.5f));
            EditorStyles.label.Draw(position2, extension, false, false, false, false);
            GUI.contentColor = Color.white;
        }
        position.x += position.width;
        position.width = gUIStyle.fixedWidth;
        position.height = gUIStyle.fixedHeight;
        if (GUI.Button(position, GUIContent.none, gUIStyle) && path != "")
        {
            path = "";
            GUI.changed = true;
            GUIUtility.keyboardControl = 0;
        }
        return path;
    }
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Unity 编辑器路径设置输入框

看到一个不错的编辑器路径设置输入框,前后都有文本提示,输入只在中间进行输入。
  • akof1314
  • akof1314
  • 2016-02-26 20:28
  • 3425

Unity EditorWindow自定义弹出窗口

Unity EditorWindow自定义弹出窗口 在Unity中 可以通过在Editor文件夹下 创建继承EditorWindow的类来弹出自己定义的窗口 using UnityEngine; ...
  • u011416077
  • u011416077
  • 2015-12-19 21:53
  • 3345

Unity Editor 基础篇(三):自定义窗口

本文参自:http://mp.weixin.qq.com/s/tMSAIND4Pq0farn2jY8rwg本文为本人学习上连接的笔记有改动,请点击以上链接查看原文,尊重楼主知识产权。Unity Edi...
  • qq_33337811
  • qq_33337811
  • 2017-03-15 15:50
  • 6187

【Unity】Unity编辑器搜索风格输入框

Unity编辑器搜索风格输入框参考 Unity 编辑器路径设置输入框效果如下 没输入的时候 有输入的时候 private GUIStyle TextFieldRoun...
  • RICKShaozhiheng
  • RICKShaozhiheng
  • 2016-08-30 17:11
  • 894

jsp页仿word编辑器输入框

  • 2011-03-04 05:30
  • 1.20MB
  • 下载

Activiti流程编辑器中任务节点用户输入框改为弹出选择框

将整合到系统中的activiti流程编辑器中任务节点的候选人和候选组输入框修改为弹出框
  • murongxuesheng
  • murongxuesheng
  • 2017-07-26 16:17
  • 171

unity在webgl端 输入框无法输入中文和中文显示问题的解决

unity在发布成webgl无法显示中文和inputField无法输入中文的问题应该都遇到了,博主蛋疼的查了好久才发现unity内置的inputfield类不支持IME,顺着这个路不小心找到了插件 这...
  • u013172864
  • u013172864
  • 2017-12-22 15:18
  • 212

【Unity&UGUI】输入框代码控制InputField,并显示输入文本

----------------- using System.Collections; using System.Collections.Generic; using UnityEngine; usi...
  • BuladeMian
  • BuladeMian
  • 2017-05-18 17:16
  • 5330

Unity3D NGUI UIInput制作输入框屏蔽特殊字符(只允许输入正整数)

1、首先看看使用NGUI插件创建一个简单输入文本框效果:。 2、这个简单的输入文本框需要一个label标签作为显示,一个背景图片以及输入UIInput脚本。我们看看unity的输入文本框的节点图 ...
  • wcluojiji
  • wcluojiji
  • 2015-03-03 14:21
  • 3858

unity3D 编辑器通过拖拽获取文件路径

Unity3D项目开发过程中咱们难免会碰到一些需要设置Prefab路径的时候,例如某个攻击动作的特效,虽然我们最终都是通过填表来完成,如果完全手动填表那实在让人崩溃啊,碰到有的特效命名不小心填错了,那...
  • qq617119142
  • qq617119142
  • 2015-01-10 00:31
  • 653
    个人资料
    • 访问:3499186次
    • 积分:35794
    • 等级:
    • 排名:第138名
    • 原创:400篇
    • 转载:88篇
    • 译文:5篇
    • 评论:3419条
    个人说明
    联系方式:
    文章存档
    最新评论