我该如何比较克隆的位置?

时间:2014-05-26 06:12:27

标签: unity3d unityscript

我在list.list中有16个克隆得到随机播放和克隆放在随机的地方。我有点击克隆的交换功能与其neighbour交换它们的位置。现在我想在每次点击winorLose()函数运行后比较克隆列表的位置,如果它们相等,则新级别将加载。现在我已经完成了这个。

Board.cs

void Start () {

       for(int a=GridHeight;a>0;a--){
         for(int b=0;b<GridWidth;b++)
       {
           g =  Instantiate(gemprefab, new Vector3 ( b,a, 0), Quaternion.identity) as GameObject;

          g.name= g.GetInstanceID().ToString();
          g.transform.parent = gameObject.transform;

          //LastGem=g.GetComponent<Gem>();


          gemComponent = g.GetComponent<Gem>();
          gems.Add(gemComponent);
          gems1.Add(gemComponent);
          if(a==1 && b==3)
          { 
              gemComponent.cube.renderer.enabled = false;
          }

       }

    }
       //gems.Sort ();
       //gems1.Sort ();

       gameObject.transform.position = new Vector3 (-2.5f, -2.5f, 0);
    ChangePosition();
       WinOrLose ();
    }

public void ChangePosition() {

       for(int i = 0; i < gems.Count; i++) {
         Vector3 temp = gems[i].transform.position;
           randomIndex = Random.Range(0, gems.Count);
         gems[i].transform.position = gems[randomIndex].transform.position;
         gems[randomIndex].transform.position = temp;


       }
       }


    public void SwapGem(Gem gem1)
    {

          gem1start = gem1.transform.position;
          gem1end = gemComponent.transform.position;
          if (gemComponent.IsNeighbourWith (gem1)) {
                 gem2start = gem1end;
                 gem2end = gem1start;
                 gem1.transform.position = gem2start;
                 gemComponent.transform.position = gem2end;

          }

       }

    public void WinOrLose( )
    {  gems1.Sort ();
       for(int i=0;i<gems.Count;i++){
         for(int j=0;j<gems.Count;j++){
          if (gems[i].GetInstanceID()==gems1[j].GetInstanceID()) {
                 print ("match);
          }
         }}
    }

Gems.cs

public void OnMouseDown()
    {

          if (!GameObject.Find ("board").GetComponent<board> ().isSwapping)
       {
                 GameObject.Find ("board").GetComponent<board> ().SwapGem (this);

          }

       GameObject.Find ("board").GetComponent<board> ().WinOrLose ();

    }

但是它总是按下按钮打印匹配。为什么我得到这个并且列表没有得到比较.. ??我做错了什么?请帮忙

1 个答案:

答案 0 :(得分:0)

看,伙计。你的问题不在于“比较克隆”。而不是你在这里问过的任何问题。您的主要问题是您似乎不理解您的代码如何工作以及它应该如何工作。了解如何调试程序。

  1. 熟悉Debug.Logconsole
  2. 了解如何使用调试器。是一个非常强大的工具。浏览此视频教程:http://www.youtube.com/watch?v=-D6qXaGSC2k
  3. 耐心等待。也许你需要一两天才能使用它们。但它会给你提供更多关于堆栈溢出的1000个问题。