绘制OnGUI时的问题
本文关键字:问题 OnGUI 绘制 | 更新日期: 2023-09-27 18:16:36
我在尝试在GUI上绘制纹理时遇到了一个问题。以下是OnGUI()
中的错误代码片段:
var e = Event.current;
if (e.type == EventType.mouseDown)
{
Debug.Log("Mouse pressed");
GUI.DrawTexture(new Rect(e.mousePosition.x, e.mousePosition.y, 100, 110), ButtonTexture);
}
我成功地获得了日志输出,但没有绘制纹理。然而,如果我在if
语句之外使用这个,纹理跟随我的鼠标而没有任何问题。我已经摆弄这个两个小时了,但似乎还是不知道哪里出了问题。如有任何帮助,不胜感激。
编辑:如果条件是事件,似乎任何类型的绘图都不起作用,但是标准if(1>0)
没有问题。我也试过使用Input.GetMouseDown
作为替代,但同样的问题。
我认为这可能是因为mouseDown是触发一次鼠标点击。
事件。Current将显示正在处理的当前事件,每帧可能有许多不同的事情,所以在调用OnGUI之间,这可能会改变。
一个更好的方法是存储mousedown事件发生的时间,并一直跟踪直到它被释放,您可以通过检查event来实现这一点。Input.GetMouseButtonDown.
下面是一个简短的示例,说明如何使用Event.Current.
来跟踪鼠标是否处于关闭状态。bool isMouseDown = false;
void OnGUI()
{
EventType currentEventType = Event.current.type;
if (currentEventType == EventType.MouseDown)
{
isMouseDown = true;
}
else if (currentEventType == EventType.MouseUp)
{
isMouseDown = false;
}
//Use isMouseDown as appropriate...
}