12월 18, 2015

Public 필드 선언과 [SerializeField] 선언의 차이



유니티 스크립트에서 public 으로 변수를 선언한 경우 자동적으로 인스펙터창에서 공개 된다.
또한 변수에 [SerializeField] 속성을 지정했을 때에도 마찬가지로 같은 결과를 볼 수 있다.
둘 중에 어떤

일반적으로, 항상 변수를 생성할 때 가능한 최소의 접근 레벨을 갖도록( i.e.private ) 해야 한다.
이에 대한 많은 근거들이 있지만, 그 중에 하나는 여러분이 큰 팀에서 협업을 하거나 또는 혼자서 작업할지라도,
실수로 다른 클래스에서 작성된 코드로 인해 변경되지 않아야 하는 변수들이 변경되기 쉽기 때문이다.
여러분이 선언한 대부분의 클래스 내에서 필요한 변수들은 private 여야 한다.

public 변수 선언으로 유니티가 자동적으로 인스펙터창에 띄워주는 편리한 면이 있지만, 그보다
private 선언 후 [SerializeField] 속성을 지정해 주는 것이 좋다. 어떻게 보면 private 선언의 목적을 깨는 것이지만,
이것은 그나마 다른 스크립트의 오류를 찾는 것보다 훨씬 수월할 것이다.

유니티 공식 문서


유니티 공식 문서를 보면 [SerializeField] 를 거의 사용할 일이 없을 것이라고 나오고, public 변수의 선언을 권장하지만,
다른 여러 프로그래머의 의견은 이것이 나쁜 OOP 습관이라고 주장한다.

한편, 아래는 Unite 2015 Europe 에서
Public 선언이 Private 선언보다 더 나은 성능을 낼 수 있다는 주장을 하고 있는 동영상이다.

유튜브 링크


성능이 중요시 되는 저사양 디바이스에서는 이 점을 고려해서 개발에 참고하면 좋을 듯 하다.

댓글 없음:

댓글 쓰기

댓글