유니티 새로운 씬 하나 만들고 게임오브젝트 하나 만들어서 여기다가 Class_A , Class_B 스크립트 컴포넌트 만들어서 붙여줬음


그리고 밑에 코드가 각각 스크립트 코드임


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Class_A : MonoBehaviour {


    public class Data
    {
        public int id;
    }

    public Data[] arr = new Data????;

    Class_B _B;

    private void Awake()
    {
        for(int i =0; i        {
            arr[i] = new Data();
        }

        _B = GetComponent();

    }


    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.F1))
        {
            add(1000);
        }

        if (Input.GetKeyDown(KeyCode.F2))
        {
            add(2000);
        }

        if (Input.GetKeyDown(KeyCode.F3))
        {
            Debug_check();
        }

    }


    int index;

    void add(int num)
    {
        if (index         {
           
            _B.cg_num(num);
            arr[index] = _B.key_value;       // arr[index].id = _B.key_value.id;
            index++;
        }
    }

    void Debug_check()
    {
        for(int i = 0; i        {
            Debug.Log(arr[i].id);
        }
    }

   


}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


      



using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Class_B : MonoBehaviour {


    public Class_A.Data key_value = new Class_A.Data();

    public void cg_num(int num)
    {
        if (num == 1000)
        {
            key_value.id = 1;
        }

        if (num == 2000)
        {
            key_value.id = 2;
        }

    }
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



이게 뭐냐면 F1 눌렀을 때 10개의 배열 공간에 차례대로 0번 인덱스 부터 1이 라는 값이 쌓이고

F2를 누르면 2라는 값이 쌓임  ,  F3 눌렀을 때 결과값 확인하는 코드인데


F1F1F2F2F3  << 이런식으로 누르면 배열은  1122000000  이런식으로 들어와야되


그런데 저 위에 코드 대로 하면 마지막에 눌렀던 값으로 처음부터 다 값이 변경이 되버림 즉, 2222000000 이렇게


이 상태에서 F1 한번 누르고 F3 누르면, 1111100000 이렇게 값이 바뀌고...


그래서 내가 왜이럴까 하고 코드를 중간에 건드려봤는데 Class_A 코드 중간에 보면 주석처리 된 코드로 그 줄 바꾸면 (arr[index].id = _B.key_value.id;)


내가 원하던 대로 되기는 하거든? 근데 이게 무슨 차이때문에 저렇게는 모든 배열이 마지막 값으로 다 바뀌는지 이해가 안됨;


뭔가 내가 놓친부분이 있나 싶기도 하고.. 왜 저러는 걸까?