[Unity] 유니티 코드에서 참조 타입과 값 타입

Learning 

When: 1학년 5월 10일

 

How:

코드를 짜다가 Transform은 참조 타입인데 position 변수는 복사가 되어, 복사가 되는 타입과 참조가 되는 타입이 헷갈려서 규칙이 있을까 싶어 공부를 해보았습니다.

 

Understanding:

값 타입은 변수를 어떠한 값에 대입해도 값이 2개가 되어, 대입받은 변수가 바뀌어도 대입한 변수는 바뀌지 않는다는 것입니다. 그리고 참조 타입은 똑같이 했을 때 값이 2개가 되지 않고, 대입받은 변수가 대입한 변수의 값을 참조하여 대입받은 변수에 변화를 주면 원본 값에 변화가 생기는 것입니다.

이것을 확인하는 방법이 있는데, 클래스에 마우스를 가져다 대면 struct와 class로 나뉘고 struct가 값 형식, class가 참조 형식입니다. string은 불변이라 값처럼 작동하고 예외가 조금은 있지만 대부분은 그렇게 생각하시면 됩니다.

Unity에선 컴포넌트와 GameObject 등이 참조 타입이어서 그것을 변수가 복사하면 그 값을 바꿀 수 있고, Vector, Color, Quaternion 등이 값 타입이어서 값을 복사한 후 활용하기 좋습니다. 고로 position은 Vector 형식이기 때문에 값 타입이라는 것을 알 수 있습니다.

 

Result: position은 Vector 형식이기 때문에 값 타입입니다.