Transform

Like Big·2022년 11월 27일
0

Transform

  • transform.posion을 조작하는 API로 오브젝트 변형 가능
  • 유니티는 C++이 엔진 내부가 프로그래밍 되어있고(빨라서) 유저 스크립트가 작성되는(우리가 작성하는) C#이 C++ API를 랩핑하여 사용하고 있다

공간

  • C++의 트랜스폼과 C#의 트랜스폼 공간, 물리 충돌과 같은 물리 공간용 트랜스폼도 따로 존재
  • 2D는 Box2D, 3D는 Physx 물리 엔진 사용
  • C# API로 공간 변환시 다른 공간에도 영향을 미치며 상호작용. 다른 공간에서의 변화도 C# 공간에도 변환이 되면서 Sync가 맞춰짐

성능 향상 팁

  • SetPositionAndRotation을 통해 각각 position, rotation 두번 행렬 업데이트를 한번에 할 수 있어 사용을 추천
  • 많은 .cs 파일에서 Transform을 조작한다면 각 소스코드마다 공간 변환을 하므로 비효율적 -> 한군데서 최종 공간 변환을 하는게 효율적임
  • Rigidbody가 붙은 스크립트인데, transform을 변환하면 서로 변환 업데이트가 일어나면서 연산 낭비가 됨
  • 게임로직상 그럴수 밖에없다면 Auto Sync Transforms 옵션을 꺼서 transform API를 사용시 물리 공간을 항상 Sync 맞추지 않게 할 수 있음. 예전에는 옵션이 없어 강제사항으로 끌수 없었음
  • transform 도 오브젝트의 계층구조를 그대로 따르기 때문에 하위 모든 객체들이 transform 되며 자식들도 모두 변형되므로 계층구조를 깊지 않게 간단하게 만드는게 좋음
  • 깊어지게 될 수 밖에 없는 경우가 케릭터지만(케릭터 하나당 200개정도 오브젝트 있음)
profile
개고운(개발,고양이,운동)

0개의 댓글