1. 몬스터를 오브젝트 풀에서 꺼내서 초기화하고 활성화시킬거임
2. 공격을 n초 간격으로 어떤 상황이든지 어차피 해야되는거라 활성화되고나서 UniTask를 써서 계속 while (true)로 실행하게함
3. 몬스터가 죽으면 파괴는 아니고 당연히 그냥 비활성화 되면서 풀에 들어감
4. 이때 유니태스크 뒷처리 해줘야하는지?? 좀 찾아보니 파괴될때는 GetCancellationTokenOnDestroy 함수가 있던데 이건 말 그대로 '파괴'에 관한거라 좀 다른거같아서요
기본적으로 UniTask는 코루틴과 달리 async/await 기반 동작이라 비활성화된 오브젝트에도 얄짤없이 돌아감. 활성화/비활성화할 때 태스크 라이프사이클 관리 처리 해야함
근데 별도로 스레드 지정해주지 않는 이상 메인스레드에서 돌아가는게 코미디더라. 유니티라 당했다...
메인 스레드 쓰는건 unitask 기본 사양임. 목적 자체가 게임 루프 위에서 도는 task로 안전하게 엔진 요소에 접근할 수 있게 해준거 - dc App
해당 댓글은 삭제되었습니다.
ㄳㄳ 공격함수가 구현된 곳이 mono상속을 안받은 클래스라 못씀.. 여튼 확인
그러니깐 OnEnable에서 활성화될때 다시 new CancellationTokenSource 해줘야한단거죠? 그리고 Disable에서 취소시켜주고
오호 감사합니다. 진짜 중요한걸 이제야 알았네요; 활성화/비활성화는 취소처리 안해도 되는줄 알았음..
OnEnable에 cts?.Cancel , cts = new cancellationTocken; OnDisable에 cts?.Cancel, cts?.Dispose, cts = null 이거 라이더가 권장하길래 쓰고있음