我想标记访问对象的列表。我是C#和编程的初学者。 因此,我正在迭代对象列表,检查它们与飞机的距离,然后保存它们。但我需要检查,如果该对象已被访问或无..添加访问列表
的问题是在visitedTrees,我需要保存他们那里,这样,当我访问过的所有树对象我退出。
HashSet<Vector3> visitedTrees = new HashSet<Vector3>();
var stripes = new Dictionary<int, List<Transform>>();
int stripeNumber = 0;
cameraPlane.SetNormalAndPosition(normal, view.camera.transform.position + normal * minDistance);
int visited = 0;
while (true)
{
bool reachedFarTree = false;
foreach (var gameObject in trees)
{
float distance = cameraPlane.GetDistanceToPoint(gameObject.transform.position);
Debug.Log("distances " + Mathf.Abs(distance));
if (Mathf.Abs(distance) < 20)
{
List<Transform> treeStripes;
if (!stripes.TryGetValue(stripeNumber, out treeStripes))
{
treeStripes = new List<Transform>();
stripes[stripeNumber] = treeStripes;
}
treeStripes.Add(gameObject.transform);
if (!visitedTrees.Contains(gameObject.transform))
{
visitedTrees.Add(gameObject.transform.position);
visited++;
}
}
if (visited == visitedTrees.Count)
{
reachedFarTree = true;
}
}
offset += 20;
cameraPlane.SetNormalAndPosition(normal, view.camera.transform.position + normal * offset);
stripeNumber++;
if(reachedFarTree)
break;
}
它看起来像你将它们添加到'visitedTrees'当你访问,所以你只需要知道是否访问过树'包含一个节点?这只是'.Contains' - 你已经在使用。所以我很困惑:你究竟需要做什么,你还没有? – Rup 2015-03-03 11:23:48
Rup,是的但包含不起作用,它给出了编译错误 – ragia 2015-03-03 11:32:14
isnt gameObject.transform矩阵而不是vector3? – 2015-03-03 11:37:49