why does my current code line consist next line of code information

I have two script code as givien below Main Problem :slight_smile: The main problem is that if my gameobject(i mean pycs in code) is destroyed why does my code carrys next pycs[(int)information] like this line carry (WhitePieceXData[3] = pycs[3].GetComponent().Get_X_Board_Easy(pycs[3]);) but why does it converts to (WhitePieceXData[3] = pycs[4].GetComponent().Get_X_Board_Easy(pycs[4]);) while game is runing THANKU SO MUCH FOR YOUR TIME
GOD HELP THOSE WHO HELP OTHERS
I WILL HELP 1 MORE PERSON IF YOU HELP ME
THANKU Team,BDS

// first Script
  GameObject[] pycs = GameObject.FindGameObjectsWithTag("Pieces").OrderBy(go => go.transform.GetSiblingIndex()).ToArray(); // info white Pieces
                object[] WhitePieceXData = new object[16]; //Made a array of the xboard which i want to send from 0-15
    
                WhitePieceXData[0] = pycs[0].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[0]);
                WhitePieceXData[1] = pycs[1].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[1]);
                WhitePieceXData[2] = pycs[2].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[2]);
                WhitePieceXData[3] = pycs[3].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[3]);
                WhitePieceXData[4] = pycs[4].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[4]);
                WhitePieceXData[5] = pycs[5].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[5]);
                WhitePieceXData[6] = pycs[6].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[6]);
                WhitePieceXData[7] = pycs[7].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[7]);
                WhitePieceXData[8] = pycs[8].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[8]);
                WhitePieceXData[9] = pycs[9].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[9]);
                WhitePieceXData[10] = pycs[10].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[10]);

second script :slight_smile:

public object Get_X_Board_Easy(GameObject Gobj)
    {
        if (Gobj.layer != 8)
        {
            return Gobj.GetComponent<Chessman>().xBoard;
        }
        else
        {
            return null;
            Gobj.GetComponent<DiedChessman>().IsDied = true;
            Debug.Log(Gobj + " , 0" + Gobj.GetComponent<DiedChessman>().IsDied);
        }
    }

I think its not actually converting this:

WhitePieceXData[3] = pycs[3].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[3]);

into this:

 WhitePieceXData[3] = pycs[4].GetComponent<DiedChessman>().Get_X_Board_Easy(pycs[4]);

Instead, by destroying pycs[3] you are removing it from the array, and the array is ‘moving’ pycs[4] up one slot to become pycs[3].

I’m not sure what you’re trying to achieve but by the looks of it I think using a dictionary that maps each WhitePieceXData to a pyc might help