如何循环列表中的下一个项目?

时间:2018-01-26 14:51:34

标签: c# unity3d unity5

我正在为一个统一项目构建一个墙壁放置脚本,你可以将帖子放下来,如果帖子足够接近另一个帖子,墙壁会在它们之间实例化。我遇到的问题是循环列表中的对象,找到确定距离,currentPost和previousPost的2个对象。

[SerializeField]
private GameObject wall;
[SerializeField]
private GameObject post;

public GameObject currentPost;
public GameObject previousPost;

private List<GameObject> posts = new List<GameObject>();

private void Update()
{
    GetInput();
    Debug.Log(posts.Count);
    Debug.Log("Distance" + Distance());
}

private void AdjustWalls()
{   

    previousPost = posts[0]; //here is where I'm hoping to make the cycling change
    if(Distance() > 10)
    {
        Debug.Log("wall Placed");
    }
}

private void AddPosts()
{
    currentPost = ((GameObject)Instantiate(post, gridSnap(getWorldPoint()), Quaternion.identity));
    posts.Add(currentPost);
    AdjustWalls();       
}

private void GetInput()
{
    if (Input.GetKeyDown("q"))
    {
        AddPosts();
        currentPost.transform.parent = transform;
    }
}

public float Distance()
{
    return Vector3.Distance(currentPost.transform.position, previousPost.transform.position);
}

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

无法在AddPost中执行此操作,而是执行以下操作并从previousPost = posts[0];删除AdjustWalls()行?:

private void AddPosts()
{
    if(currentPost != null)
    {
       previousPost = currentPost;
    }
    currentPost = ((GameObject)Instantiate(post, gridSnap(getWorldPoint()), Quaternion.identity));
    posts.Add(currentPost);
    AdjustWalls();       
}