代码之家  ›  专栏  ›  技术社区  ›  Ginxxx

实例化的对象与控制台的输出不同。(统一)

  •  0
  • Ginxxx  · 技术社区  · 8 年前

    enter image description here

    如上图所示,在控制台上,前3个输出是 BLUE 但我的例句前五个是不同的

    enter image description here

    就这些了 蓝色 前言。

    到目前为止,我的代码是:

    for(int col = 0; col < table.GetLength(0); col++){
    
            GameObject p = Instantiate(prefab_bigeye_gameobject) as GameObject;
            p.transform.SetParent (pos_big_eye_road);
            p.transform.localScale = Vector3.one;
    
            img = (RawImage)p.GetComponent<RawImage> ();
            for(int row = 0; row < table.GetLength(1); row++){
                if(table[moveCol, moveRow] == null){
                    col0 = table[colIndex1, row];
                    col1 = table[colIndex2, row];
    
                    if(col0 != null)
                    {
                        sum1+=1;
                    }
    
                    if(col1 != null)
                    {
                        sum2+=1;
                    }
                    counter++;
                }
                else
                {
                    if(counter == 0){
                        data1 = table[firstTableCol,firstTableRow];
                        data2 = table[secondTableCol,secondTableRow];
                        data3 = table[thirdTableCol,thirdTableRow];
                        data4 = table[fourthTableCol,fourthTableRow];
                    }
                    else{
    
                        if(moveRow > 1){
                            firstTableRow++;
                            secondTableRow++;
                            thirdTableRow++;
                            fourthTableRow++;
                        }else{
                            firstTableCol++;
                            secondTableCol++;
                            thirdTableCol++;
                            fourthTableCol++;
                        }
                        data1 = table[firstTableCol,firstTableRow];
                        data2 = table[secondTableCol,secondTableRow];
                        data3 = table[thirdTableCol,thirdTableRow];
                        data4 = table[fourthTableCol,fourthTableRow];
    
                    }
                    if(data1 != null && data2 != null && data3 != null && data4 != null)
                    {
    
                        img.texture = NewTexture[1];
                        p.SetActive(true);
                        redcounter++;
                        print("RED ARE NOW AT:" + redcounter);
                    }
                    else
                    {
                        img.texture = NewTexture[0];
                        p.SetActive(true);
                        bluecounter++;
                        print("BLUE ARE NOW AT:" + bluecounter);
                    }
    
                    if(moveRow + 1 < table.GetLength(1)){
                        moveRow++;
                    }
                }
            }
    
            if(sum1 == sum2)
            {
                img.texture = NewTexture[1];
                p.SetActive(true);
                redcounter++;
                print("RED ARE NOW AT:" + redcounter);
            }
            else
            {
                img.texture = NewTexture[0];
                p.SetActive(true);
                bluecounter++;
                print("BLUE ARE NOW AT:" + bluecounter);
            }
            //reset
            sum1 = 0;
            sum2 = 0;
    
            if(colIndex1 + 1 < table.GetLength(0) && colIndex2 + 1 < table.GetLength(0))
            {
                colIndex1++;
                colIndex2++;
            }
            else
            {
                //nothing to do
            }
    
            if(moveCol + 1 < table.GetLength(0))
            {
                moveCol+=1;
            }
            if(moveRow + 1 < table.GetLength(1)){
                moveRow = 1;
            }
        }
    

    预期输出必须是

    BLUE , BLUE , BLUE, RED, BLUE

    但在我的输出上

    BLUE, BLUE , BLUE, BLUE, BLUE

    1 回复  |  直到 8 年前
        1
  •  0
  •   Ginxxx    8 年前

    我不知道为什么直接在for循环中实例化它会让它变得疯狂,所以我所做的就是通过创建一个函数来分离它们。

    void blueBead(){
        p = Instantiate(prefab_bigeye_gameobject) as GameObject;
        p.transform.SetParent (pos_big_eye_road);
        p.transform.localScale = Vector3.one;
    
        img2 = (RawImage)p.GetComponent<RawImage>();
    
        img2.texture = NewTexture[0];
        p.SetActive(true);
    }
    
    void redBead(){
        p = Instantiate(prefab_bigeye_gameobject) as GameObject;
        p.transform.SetParent (pos_big_eye_road);
        p.transform.localScale = Vector3.one;
    
        img2 = (RawImage)p.GetComponent<RawImage>();
    
        img2.texture = NewTexture[1];
        p.SetActive(true);
    }
    

    像这样称呼他们

    if(data1 != null && data2 != null && data3 != null && data4 != null)
    {
    
        readBead();
    }
    else
    {
        blueBead();
    }