在Unity onGui

时间:2015-08-20 11:46:15

标签: c# unity3d

如何在Unity中的onGui函数中绘制图像?我使用以下代码来绘制一些textField。但是,如何在框中绘制图像?

GUI.TextField (new Rect (0, 0, 60, 30), counter.ToString());
GUI.TextField (new Rect (60, 0, 60, 30), max.ToString());
GUI.TextField (new Rect (120, 0, 60, 30), value.ToString());

我尝试使用以下代码:

Texture2D image = (Texture2D)Resources.Load("12.jpeg");
GUI.DrawTexture(new Rect(200, 200, image.width, image.height), image);

我得到了空引用错误。以上代码是否正确?我错过了正确的道路吗?

1 个答案:

答案 0 :(得分:1)

尝试使用方框但是在应该出现在图像上方的其他GUI元素之前绘制它,因为OnGUI以您编码的相同顺序绘制,例如,如果您在文本输入后放置框,它们将被绘制在盒子;)

GUI.Box(new Rect(200, 200, image.width, image.height), image);

已编辑:为了清楚起见,DrawTexture期望纹理不是Texture2D,这可能是您目前的问题。

已编辑:

一开始没有看到你的空引用异常。尝试更改代码以在Start()而不是OnGUI()上加载图像,因为OnGUI每帧运行多次并且还使用image = Resources.Load("12.jpg") as Texture2D(如果要维护DrawTexture而不是Box,则使用纹理)。

请注意,Resources.Load()将在Assets / Resources /下搜索,因此您的12.jpg需要位于这个名为" Resources"的保留文件夹下。 (大写)。如果它位于子文件夹下,我认为您需要在路径中指定它,如Resources.Load("sub/12.jpg")