Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 如何阻止即时GUI在单击时选择所有文本_Unity3d - Fatal编程技术网

Unity3d 如何阻止即时GUI在单击时选择所有文本

Unity3d 如何阻止即时GUI在单击时选择所有文本,unity3d,Unity3d,UnitySimmediateGUI坚持在每次点击时选择任何基于文本的输入字段(TextField、TextArea、IntField…)的所有内容(但它还没有获得焦点) 有什么方法可以防止这种情况吗?Unity本身并没有提供一种方法来防止这种情况 在尝试了许多解决方案后,我在别处找到了,但都失败了,于是我做了一些逆向工程,并提出了以下解决方法 此包装器方法将通过临时将cursorColor.a设置为0来防止全选。在内部,Unity仅在光标不透明时才执行“全选” private T Withou

UnitySimmediateGUI坚持在每次点击时选择任何基于文本的输入字段(TextField、TextArea、IntField…)的所有内容(但它还没有获得焦点)


有什么方法可以防止这种情况吗?

Unity本身并没有提供一种方法来防止这种情况

在尝试了许多解决方案后,我在别处找到了,但都失败了,于是我做了一些逆向工程,并提出了以下解决方法

此包装器方法将通过临时将
cursorColor.a
设置为0来防止全选。在内部,Unity仅在光标不透明时才执行“全选”

private T WithoutSelectAll<T>(Func<T> guiCall)
{
    bool preventSelection = (Event.current.type == EventType.MouseDown);

    Color oldCursorColor = GUI.skin.settings.cursorColor;

    if (preventSelection)
        GUI.skin.settings.cursorColor = new Color(0, 0, 0, 0);

    T value = guiCall();

    if (preventSelection)
        GUI.skin.settings.cursorColor = oldCursorColor;

    return value;
}

团结本身并没有提供一种防止这种情况发生的方法

在尝试了许多解决方案后,我在别处找到了,但都失败了,于是我做了一些逆向工程,并提出了以下解决方法

此包装器方法将通过临时将
cursorColor.a
设置为0来防止全选。在内部,Unity仅在光标不透明时才执行“全选”

private T WithoutSelectAll<T>(Func<T> guiCall)
{
    bool preventSelection = (Event.current.type == EventType.MouseDown);

    Color oldCursorColor = GUI.skin.settings.cursorColor;

    if (preventSelection)
        GUI.skin.settings.cursorColor = new Color(0, 0, 0, 0);

    T value = guiCall();

    if (preventSelection)
        GUI.skin.settings.cursorColor = oldCursorColor;

    return value;
}

这个问题和答案就像询问如何启动Windows95,然后回答它。除非用于编辑器插件,否则不应使用IMGUI。您应该使用Unity的新UI系统(uGUI)。同样,任何带有
OnGUI
GUI.XXX
的东西都不应该使用。我确实在使用编辑器工具。IMGUI是我仅有的GUI,我正面临问题中描述的问题。在这种情况下,它很好。这个问题和答案就像询问如何启动Windows 95,然后回答它。除非用于编辑器插件,否则不应使用IMGUI。您应该使用Unity的新UI系统(uGUI)。同样,任何带有
OnGUI
GUI.XXX
的东西都不应该使用。我确实在使用编辑器工具。IMGUI是我在那里拥有的唯一的GUI,我正面临着我在问题中描述的问题。在这种情况下,它很好。