The*_*ler 10 unity-game-engine inspector
我试图在编辑器中显示一个二维数组,如Unity中显示的"图层碰撞矩阵":

虽然我需要整数而不是复选框,而是一个完整的网格(不是三角形).我似乎无法弄清楚如何做到这一点......我可以得到一个自定义编辑器,尽管使网格失败.那么,有什么方法可以看到物理管理器编辑器的代码(层碰撞矩阵在那里)或者有人知道这样做的好方法吗?
注意:首选语言是c#,但任何都可以.
谢谢.
你所寻找的代码涉及的代码非常复杂,所以我将依靠你来了解我在这里谈论的内容.Unity文档是你的朋友.
创建一个GUIArea特殊编辑器工具的位置.在其中,放置一个函数调用,然后调用其他渲染函数.我怀疑你想在这里做一些封装.将gui封装在另一个函数中将允许您复制其功能(在抽象的限制范围内)并更容易在屏幕上移动.
设计三个锚点(Vector2).它们应分别代表行标签,列标签和数据字段的左上角坐标.请注意,列锚点需要直接位于行锚点的上方(与x值相同),因为旋转(下一步)将转换锚点.
用于GUIUtility.RotateAroundPivot()围绕列锚点旋转GUI变换矩阵90°.
GUI.Label为您的标签写一个长(或几个).将它们锚定在列锚点上.根据上图,您的标签字符串可以读取类似"Default \nTransparentFX \nIgnoreRaycast \nWater"的内容,其中\n创建换行符.
再次旋转,-90°回到原始矩阵.或者,您可以GUI.matrix在步骤3之前复制,然后将其分配回来以保证矩阵重置.由于浮点和其他不精确,来回旋转可能会有一些误差.
为行写标签.与两步的方法相同.将它们锚定在行锚点上.
这是更难的部分.通过您的数据域迭代,创建一个较小EditorGUI.IntField()或者StringField()甚至
ObjectField()为你的数据的每个元素.每个元素都需要自己的锚点,然后将其与数据字段锚点相加.如果您的数据字段是方形2D数组,那么派生锚点将很容易 - 尽管您的数组中也会有空元素(如果您想要上面描述的确切功能).如果你想节省内存,你必须使用一些棘手的数学将元素索引转换为坐标.我不确定我是怎么做到的.
希望我不会忘记任何事情.Unity的GUI是一个b ----.评论,我会尽我所能来帮助你.