【发布时间】:2021-06-25 04:59:35
【问题描述】:
有时 Unity 项目的数据需要的数据比普通检查器字段要多,我们希望创建更复杂的工具来编辑数据。例如,这里有一篇关于创建节点编辑器的博文:Creating a Node Based Editor in Unity
能够创建节点编辑器很有用,但该项目只使用 GUI 和 Handles 中的工具绘制框、线和曲线,这很好,但是如果我们需要绘制未提供的东西怎么办按把手?
例如,如果我们想绘制一个精细的网格来表示我们希望能够编辑的一些数据,使用 Handles.DrawAAConvexPolygon(...) 渲染网格的每个单独的多边形似乎并不理想。我们不应该有一种方法更直接地发送要渲染的网格吗?还是 DrawAAConvexPolygon 正是我们应该做的?
当想要在编辑器控件中绘制任意网格时,GL 类是合适的方法吗?它当然可以绘图,但这是不好的做法吗?特别是,GL.Viewport(Rect) 方法在 GUI 中的工作似乎非常奇怪。不能简单地给它一个 GUI Rect,从而在我们给它相同的 Rect 的情况下在我们有一个 GUI 控件的同一个地方有一个视口。我们需要计算将视口放置在适当位置的 Rect,即使这样我们也必须确定视口内的坐标系。根据 Viewport(Rect) 的文档,人们可能期望视口为 (0, 0) 到 (Screen.width, Screen.height),但它并不总是完全按照这种方式工作,这一切给人的印象是GL 不是为在编辑器 GUI 中使用而设计的。 GL.Viewport 的文档中已将其用于 OnPostRender 方法,那么尝试在其他地方使用 GL 是否会被误导?
如果我们不应该使用 GL 类,那么在自定义编辑器控件中绘图的技术是什么?
【问题讨论】:
-
你到底想在 Inspector 中画什么?
-
@derHugo:该项目的确切细节太复杂了,我们不想分散问题的注意力,但我已经添加到问题中以提供更多信息对某人可能想要画什么的感觉。
标签: c# unity3d unity3d-editor