[이 메모는 unity 2019.4.9를 사용할 당시 쓰인 것입니다.]
기존 GameObject의 Transform.Scale을 대신하여 Entity의 CompositeScale을 사용한다.
그런데 서버에서 Entity를 생성한 후 CompositeScale을 변경해주었는데 클라이언트랑 동기화가 안되었는지 Entity의 스케일이 커져 보이지 않음.
LocalToWorld가 뭘 의미하는지 모르겠고 이해하기 너무 어렵다. ㅠ_ㅠ
[알아야 할 것]
-
Net Code의 Ghost 서버-클라 동기화 방식
-
CompositeScale이 Entity의 LocalToWorld에 끼치는 영향
[시도해볼 방식]
- Entity를 서버에서 생성 후 SetComponetData로 CompositeScale 조정
시도 결과=> EntityDebugger에는 적용이 되어보이지만 보이기엔 적용이 되어있지 않다.
- Entity를 서버에서 생성 후 System으로 스케일을 조정
시도 결과=> 된다...! ;
기존에 내가 했던 방식과 다른 방법: 난 CompositeScale을 썼었는데 여긴 scale을 조정하니 NonUniformScale 이 생김
(뭐가 다른거지)
Entity를 서버에서 생성, 그에 부합하는 Visual GameObject를 생성, CompositeScale을 명시적으로 동기화시켜서 눈으로 확인해보기.
CompositeScale
얘는 float4x4라서 Ghost 클라-서버 동기화가 안됨
생성 시에 CompositeScale을 적용시키고 싶을 때?
=> 기존 scale을 조정하고 ghost update component list를 하면 compositeScale이 생김
하지만 scale이 non uniform 이면(x, y, z가 동일하지 않으면) convert 시에 아래와 같은 에러가 생김
해결: Scale을 다시 1, 1, 1로 시켜주고 원하는 scale 설정을 serialized field로 만든 후에
Authoring을 생성하고 거기 안에서 scale 설정값으로 AddComponent CompositeScale 해준다.
아래는 Authoring 예시
'게임 개발 > 유니티 정보' 카테고리의 다른 글
[Unity] 프로젝트에 DOTS 적용하기. Hybrid ECS (+Entity Debugger) (0) | 2021.01.11 |
---|---|
[Unity] 멀티 스레딩 코드를 안전하게! Job System (0) | 2021.01.10 |
[Unity] DOTS란 무엇인가? Unity ECS 시스템 요약 (1) | 2021.01.09 |
최근댓글