공부를 하다가 의문점을 맞닥뜨렸다.
무엇이냐면,, Update 안에 new 라는 생성코드가 들어가도 되는 것인가? 이다.
void Update()
{
float inputX = Input.GetAxis("Horizontal");
float inputZ = Input.GetAxis("Vertical");
//여기
rb.velocity = new Vector3(inputX*speed, rb.velocity.y, inputZ*speed);
}
Update는 1초당 수십프레임으로 실행이 되는 함수다.
그 1초간에 몇십번의 실행이 되는데 new 가 들어가있으면 메모리 부분에서 굉장한 타격이 가지 않을까? 라는 생각이 들었다.
그래서 한번 웹서핑을 해보았는데, 나같은 생각 하는 사람은 역시 많았다..
결론은 간단했다.
"However, when you instantiate a struct, it gets created on the stack."
유니티 공식문서"new로 할당한다고 하더라도 구조체는 여전히 스택에 생성되는 값 타입이다. C#이 이 문법을 지원하는 이유는 통일성과 생성자 호출을 위해서이다."
출처: https://3dmpengines.tistory.com/1566 [3DMP:티스토리]
스택에 저장 되니까, Update문이 끝날때 소멸한다는 것을 알 수 있다.
Update에 저렇게 사용해도 가비지 자체가 안나온다니까 안심하고 써야겠다.