无论如何在没有调用OnSceneGUI的情况下在场景视图上绘制东西?
或者有没有办法让OnSceneGUI被调用,即使没有选择附加脚本的对象?
编辑:看起来我对我要求的内容不够明确,所以这里有一点点更新:
我的游戏场景中有一大堆控件显示为GUI对象,游戏设计师使用它们来更轻松地测试游戏。由于这些工具是用于开发而不是部署,我想将它们移动到场景窗口。
不幸的是,如果选择包含带有“OnSceneGUI”方法的脚本的对象,我只能显示这些GUI工具。相反,我想让它们在游戏运行时显示,而不管选择的对象如何。
答案 0 :(得分:2)
我找到了解决问题的方法。
如果您希望您的GUI内容始终显示在场景窗口中,您可以执行以下操作:
public class MyClass{
static MyStaticConstructor() {
SceneView.onSceneGUIDelegate += OnScene;
}
static void OnScene(SceneView sceneView) {
// Draw GUI stuff here for Scene window display
}
}
此代码将在您按下播放后立即运行,并将在场景窗口中绘制您想要的任何内容。
希望它会帮助别人!
答案 1 :(得分: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 textures - >有关GUITexture
的更多信息编辑: 对于OnSceneGUI您可以尝试使用Editor.Repaint,您可以使用它来确保检查器更新OnSceneGUI内部所做的更改