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