[이 메모는 unity 2019.4.9를 사용할 당시 쓰인 것입니다.]

 

기존 GameObject의 Transform.Scale을 대신하여 Entity의 CompositeScale을 사용한다.

그런데 서버에서 Entity를 생성한 후 CompositeScale을 변경해주었는데 클라이언트랑 동기화가 안되었는지 Entity의 스케일이 커져 보이지 않음.

LocalToWorld가 뭘 의미하는지 모르겠고 이해하기 너무 어렵다. ㅠ_ㅠ

 

[알아야 할 것]

  1. Net Code의 Ghost 서버-클라 동기화 방식

  2. 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 예시

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기