【发布时间】:2017-01-26 14:29:33
【问题描述】:
我正在尝试使用 c# 在 Unity3D 中绘制树形图,我有一个包含以下变量的数据列表:
public class ObjectData
{
public string ID;
public string hierarchyParent;
public int hierarchyLevel;
}
父变量包含父对象的ID,级别变量包含行的升序即顶行= 1,下面行= 2等。我需要获取每个节点在二维空间中的坐标此树形图用于未知数量的项目。如果我尝试通过设置行并添加一个恒定的 x 值来创建它,连接线通常会交叉并且不居中。我查看了其他一些示例,但无法为我的输入数据找到教程。谢谢!
【问题讨论】:
-
不是一个很简单的问题。如果您的实际树木相对较小,可能会很好用。您的问题更像是算法。看看this question 的 Reingold-Tilford,它假设在少数情况下解决了您的要求“线经常交叉且未居中”,(我假设您想要根层次结构)或者如果它不尝试“SpaceTree”算法,那么有很多其他算法取决于您希望树的外观
-
如果您还没有,还建议您查看force-directed graph drawing method。它通常很容易实现,并且可以产生好看的结果。