赞
踩
由于这将是一个编辑器窗口,因此该类应该来自EditorWindow而不是MonoBehaviour。 EditorWindow类驻留在UnityEditor命名空间中,因此我们也需要添加它。
编辑器窗口需要初始化静态方法。 在这个方法中,我们将构建窗口并(可选)给它一个标题。 GetWindow()是一个EditorWindow方法,它创建窗口(如果它不存在),或者查找并关注它(如果存在)。
但是,静态方法本身是不够的,我们还需要添加一个按钮或类似的东西,让我们的用户在Unity中打开窗口。 值得庆幸的是,已经有一个名为MenuItem的属性,它将一个菜单项添加到Unity的菜单栏并运行它应用的方法。 因此,以下代码将创建您可以在Unity中创建的最基本的编辑器窗口。
这是菜单项:
这是我们点击它时打开的窗口:
为了在这个窗口中绘图,我们将使用OnGUI()方法(是的,Unity自己的编辑器系统仍然使用旧的GUI系统,它可能不会长时间改变)。但首先,我们需要两个矩形来定义我们的面板。我还将在他们自己的方法中绘制这些面板,所以当我们处理它时,我们也应该添加这些方法。
我们的编辑窗口开始形成。我们现在需要做的就是绘制面板并检查它们是否正常工作。GUILayout.BeginArea(Rect rect)将创建一个要绘制的矩形区域,GUILayout.EndArea()标记结束。这些区域将定义我们的面板。我还要在这两个区域添加标签,以便我们可以看到它们的外观。
好吧,他们似乎在工作:
然而,这两个面板被设置为覆盖窗口的一半,但是如果我们希望它们可以调整大小,则它们需要具有可变高度。所以,我要添加一个大小比例变量; 这样,当一个面板覆盖一定量的窗口时,另一个面板可以覆盖剩余部分。
好的,两个面板都有可变的高度......但是我们仍然无法调整它们的大小!但不要担心,我们离最终产品并不太远。现在我们只需要另一个矩形区域,这样当用户点击那里时我们就可以开始调整大小。我将在两个面板之间添加该区域。这将是10像素高,因为,为什么不呢?我喜欢10(我喜欢1010!甚至更好:))。
我们还需要向用户显示鼠标指针位于调整大小区域中。EditorGUIUtility.AddCursorRect(Rect rect,MouseCursor cursor)就是这样做的,所以我们将在绘图方法中使用它。
我们需要向用户展示另一件事:调整大小区域的开始位置。这看起来像魔术,但我保证,它不是:我们将使用Unity自己的一个图标并将其拉伸并放置,使其看起来像上下面板之间的线。
就快结束了:
现在,我们将通过添加实际的交互来最终确定它。我们将处理传入的事件,如果事件是鼠标按下事件并且它在调整大小区域,我们将开始调整大小。
这是最终版本:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。