유니티는 게임오브젝트가 잇고 거기에 컴포넌트를 여러개 붙여서 기능을 추가하는 방식이고
고도는 노드가 잇고 노드 자체가 하나의 기능을 담당함

그럼 유니티에서 게임오브젝트를 나누는 기준이 무엇이냐?
바로 트랜스폼임
게임오브젝트는 트랜스폼을 무조건 하나 가져야되고 하나 이상 가질수업슴
그래서 보통 사용자정의기능을 담당하는 스크립트는 개체의 최상단부모 오브젝트에 넣고 그래픽이나 콜라이더등 위치가 파생될때마다 새 게임오브젝트를 나눠서 자식으로 넣음
유니티 엔진 API도 다 이 아이디어를 기반으로 되어있음
오브젝트는 유일한 트랜스폼을 가지고 있고 이 트랜스폼은 겟컴포넌트 따위를 할 필요없이 이미 GameObject 객체에 transform으로 연결되어 있으며, 부모자식을 연결할때는 이 transform을 통해서 감

이렇게 하면 '트랜스폼'을 기준으로 생각했을때 직관적이고 깔끔함
낭비되는 트랜스폼이 없기때문임
같은 트랜스폼을 공유해야하는 컴포넌트는 같은 게임오브젝트에 들어있고, 자식 게임오브젝트가 있다면 자연히 부모 오브젝트의 트랜스폼을 기준으로 하는 다른 트랜스폼을 가지고 있음이 한눈에 보임

근데 고도는 이런 방식으로 생각했을때 덜 깔끔함
Node클래스는 트랜스폼 없이 씬 트리에 올라갈수있고 Node2D는 2차원 트랜스폼을, Node3D는 3차원 트랜스폼을 가지고 있는데 이것들을 씬트리에서 봐서는 구분이 안됨

노드 1개는 스크립트를 딱 하나만 붙일수있으므로 스크립트를 모듈화하려면 필연적으로 특정객체 하나가 많은 자식노드를 가져야만 하는데 이것들이 파생되는 트랜스폼이 필요한건지, 아님 그냥 기능별로 나눠놓은건지 분간이 안됨

물론 에디터에서 작업할때는 노드 아이콘이 다르므로 눈으로 보고 분간할수는 잇지만
스크립트상에서 노드간의 연결이 필요해지면 결국 수많은 노드의 향연 속에서 상대경로의 지옥이 펼쳐진다


걍 고도 배우다가 생각나서 써봄