가령 public Game objA; 라는 변수가 있고
하이라키게 있는 게임 오브젝트인 objB를 할당하려면
objA=transform.Find("objB") 뭐 이런식으로 할당할 수 있잖아요?
근데 이 때 objA는 objB를 복사해서 집어넣는 건가요,
아니면 objB를 그대로 objA에 넣게 되는건가요?
이게 왜 궁금해졌나면, 평소 다른 프로그래밍 수업에서 들었던 내용으로는
보통 클래스라던지 변수에 다른 클래스나 변수를 할당하면
복사해서 집어넣는 내용을 많이들었던걸로 기억하는데,
(예시로 classA=classB를 한 후에 classA의 멤버를 변경해도
classB의 멤버는 변경되지 않는걸로 알고있어요)
유니티에서는 GetComponent같은 것으로 스크립트를 변수에 저장해서
그 변수 멤버를 바꿔도 스크립트 멤버를 바꿀 수 있잖아요?
그래서 이거에 대해서 약간 헷갈려서 질문 드리게 되었어요.
당장 생각나는 건 오브젝트 변수랑 스크립트들은 참조형식으로
변수에 적용되는게 아닌가 추측하는데...
혹시 한번 짚어주시거나 관련 참고 문서를 알려주시면 감사하겠습니다!
프로그래밍 초보라 최대한 이해해보려고 노력하겠습니다...!
자세히 말하면 B의 메모리 주소를 할당해주는거임 int string, bool 이런거 빼면 다 내부 포인터 작동됨
아 그러면 기본적인 자료형을 제외하고는 클래스나 게임 오브젝트 같은 객체들은 대부분 참조형식으로 저장된다고 보면 되겠네요. 감사합니다!!
ㅇㅇ struct와 class의 가장 큰 차이점이 이거임
아하 그런 차이가 있군요. 감사합니다!!
예를들어 vector3은 struct이라 값 전달 및 복사를하면 주소가 아닌 데이터 자체를 긁어옴 참고로 여기서 이 차이는 저장공간이 struct - 스택 / class - 힙이라서 그럼 화이팅 응원함
좋은 정보네요 열심히 공부해보겠습니다!!
해당 댓글은 삭제되었습니다.
네 맞아요 C++ 수업에서 들었던 내용이었어요! C#은 클래스가 다르게 적용되나보네요. 예제까지 넣어서 알기 쉽게 설명해주셔서 너무 감사합니다!!!