在Unity3d的场景视图中绘制GUI元素

4
有没有一种方法可以在不调用OnSceneGUI的情况下在场景视图上绘制内容?
或者有没有一种方法可以使OnSceneGUI被调用,即使附有脚本的对象未被选择?
编辑:看起来我的要求不够明确,所以这里有一个小更新:
我在游戏场景中有很多作为GUI对象显示的控件,游戏设计师使用这些控件更轻松地测试游戏。由于这些工具是用于开发而非部署的,因此我想将它们移到场景窗口中。
不幸的是,只有在选择包含"OnSceneGUI"方法的脚本的对象时,才能显示这些GUI工具。相反,我希望它们在游戏运行时无论选择哪个对象都能显示。
2个回答

2

我已经找到了解决我的问题的方法。

如果您希望GUI元素始终显示在场景窗口上,可以执行以下操作:

public class MyClass{
    static MyStaticConstructor() {
        SceneView.onSceneGUIDelegate += OnScene;
    }
    static void OnScene(SceneView sceneView) {
        // Draw GUI stuff here for Scene window display
    }
}

这段代码将在你按下播放按钮后立即运行,并且会在场景窗口上绘制出您想要的任何内容。

希望能对他人有所帮助!


1

有许多使用GUI的方法, 最简单但效率最低的方法是在OnGUI()上使用GUI类。

GUI.Label(new Rect(10,10,10,10), "This is a label");
GUI.Label(new Rect(10,10,10,10), "Your Texture2D here");

任何活动的MonoBehaviour都会在其定义时运行OnGUI()。因此,它可以附加到任何gameObject上。您可以在场景中创建一个空的gameObject,并将其命名为"GuiGameObject",然后将脚本附加在那里。这样它就不会与您的游戏脚本混合在一起。
还有GUI纹理 --> 更多关于GUITexture的信息
此外,我建议查看nGUI 编辑: 对于OnSceneGUI,您可以尝试使用Editor.Repaint,您可以使用它来确保检查器更新在OnSceneGUI内进行的更改。

我的意思是OnSceneGUI,它是用于编辑器脚本的,在场景窗口而不是游戏窗口上显示GUI项。 - kUr4m4
啊,好的,我的错。请看我的编辑并告诉我这是否是您所期望的。 - MichaelTaylor3D
并不是真的,但感谢你的尝试。我的问题实际上是我想在场景窗口中绘制GUI按钮等内容(以使设计师的工作更轻松)。我已经设法将它们放在那里,但只有选择具有编辑器脚本扩展的特定对象时,这些按钮才会显示出来。相反,我希望这些按钮始终在场景窗口中可见。 - kUr4m4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接