크기를 유지한채 애니메이션 개별 이미지들 동시에 자르는 법

 

https://motivation.tistory.com/959

 

위 링크를 참고하되 마지막에 PNG 옵션에서 Trim layer는 꺼주도록 한다

빈 공간을 자르면 애니메이션 중심이 흐트리지기 때문이다.

 

 

 

 

내 경우에는 에디터상에서는 별 이상없었으나 안드로이드 빌드한 경우 위의 경고메시지가 뜨면서 로딩이 작동하지 않았다. 몇가지 해결책을 정리해본다.

 

1) 세이브파일 삭제하고 다시 세이브

https://docs.moodkie.com/easy-save-3/es3-api/es3-methods/es3-deletefile/

 

2) 수동 레퍼런스 추가

유니티 프로젝트 뷰에서 해당 파일들 다 선택한후 우클릭 -> Easy save3 -> Add references to manager

원래 자동으로 파일참조를 업뎃하는데 문제가 발생했기에 수동으로 추가해주는 과정이다. 안드로이드 에러는 이걸로 해결했다.

 

3) 이지세이브 포럼에서 검색

https://moodkie.com/forum/search.php?keywords=Reference+with+ID+could+not+be+found

영어가 된다면 직접 문의하거나 다른사람의 사례를 참고하면 좋다

 

 

유니티 내장 Pool을 쓰면서 재사용 시 초기화 순서가 많이 헷갈려 원하는대로 컨트롤이 힘들었다.

로그를 찍어가면서 확인한 결과 알게된 것을 정리해본다.

 

[최초 생성 시] ObjectPool.Get()   Awake() OnEnable() ActionOnGet() Start()

 

[재활용 시] ObjectPool.Get() ActionOnGet() 안에서 gameObject.SetActive(true)하면 즉시 OnEnable()

 

유니티에서 setActive(true) 호출하면 OnEnable()이 호출되는 것을 알고있어야한다.

최초생성시에는 Get()과 동시에 생성되면서 gameObject의 awake -> OnEnable 사이클을 타지만,

재활용 시에는 ActionOnGet 먼저 호출되고 그 안에서 SetActive() 호출 시 -> OnEnable()이 호출되는 흐름을 타게된다. 최초생성시와는 다르게 이미 생성된 오브젝트를 재사용하는거라 Start()는 호출되지 않는다.

물론 이 순서도 ActionOn--() 안에서 SetActive()을 쓰지 않으면 바뀐다.

 

대개 ObjectPool.Get() 이후에 transform pos나 rotation 값을 넣어주는데 이 부분은 사이클의 맨 마지막에 들어오기 때문에 ActionOnGet(), OnEnable()에서 아무리 바꿔도 소용이 없는 것이다.

 

아래 코드를 보자.

 

 

Pool.Get() 에서 연달아 호출되는 메서드에서 position을 정해도 다음 줄에서 Vector3.zero로 바뀌는 모습이다.

주의해서 사용하자

 

 

 

유니티 허브에 프로젝트를 열거나 Program files 에 설치된 유니티 에디터를 직접 열려고 시도해도 아무런 반응없이 로딩 원만 빙빙돌다 무반응되는 경우가 있다. 아무런 에러메시지도 없어서 해결하기 난감하다.

 

라이센스 문제일 확률이 매우 높다

 

유니티 허브 -> 톱니바퀴 -> 라이선스 에서 새로고침을 눌러본다. 새로고침 실패가 뜬다면

추가 -> 무료 라이센스 받기를 눌러보고 껐다켜기를 반복하다보니 갑자기 라이선스 새로고침이 되고 프로젝트도 잘 열 수 있었다. 에러메시지 없이 안열리는 경우 라이선스를 확인해보자. 인터넷 없는 환경에서 열려고 시도했을때 라이선스가 꼬인게 아닌가 생각된다. 별거 아닌데 원인을 몰라 삽질 후에 작성

 

particle/standard unlit 셰이더가 검은색부분을 알파채널로 인식하기 때문에 일어나는 현상이다.

 

해당 파티클 머티리얼을 선택한 후 Shader를 Alpha Blended로 해주면 된다.

 

+ Recent posts