StopAction으로 재생이 끝나면 Disable/Destroy 여부를 선택하여 최적화 가능https://unity.com/kr/how-to/unity-ui-optimization-tips
위에있는 링크글 정리 (유니티 공식 UI 최적화 방법)
가능하면 UI를 하나의 캔버스로 묶되, 갱신이 빈번한 UI는 별도 캔버스로 분리
예) HUD, 버튼, 텍스트 등은 한 Canvas 안에, HP바, 점수, 스킬 쿨타임 등 자주 변하는 UI는 별도 캔버스
레이캐스트 타겟 비활성화
UI에 레이캐스트가 안들어간다면 레이캐스트 끄기
UI에서 Raycast를 감지해서 처리하지않으면 옵션 해제. 어짜피 UI요소를 무시하고 오브젝트를 선택해야할때도 꺼야한다
▼ 아래 그림처럼 Canvas Graphic Raycaster 설정으로 하위 요소들을 전부 끌 수 있고

▼ 각각의 UI요소만 레이캐스트 끄게 가능하다

화면에 실제 보여지는 UI만 렌더링하도록 최적화
UI요소를 오브젝트 풀 만들어서 재사용하게 하고, UI끼리 뒤에 가려져서 안보이는 것들은 렌더링 안하도록 처리(SetActive(false) 인듯)
레이아웃 그룹 사용 지양
(쓸때는 써야할듯. 레이아웃 그룹 안쓰면 코드로 지정하라는데.. 난이도 있어보임)
레이아웃 그룹 안의 UI요소가 변경되면 다시 그룹안의 요소들이 GetComponent 호출이 발생되며 재배치 하는 과정을 수행하기 때문에 성능이 떨어짐 (CPU 부담이 크다고한다)
UI오브젝트 풀을 사용하고 반납할때 SetActive(false)처리 필수
캔버스를 숨기는 방법은 컴포넌트 자체를 비활성화 하기(SetActive(false))
UI에 Animator를 붙일때는 신중하게
(UI에 Animator 써본적이 없어서 아직은 모르겠음)
UI에 Animator 컴포넌트가 붙어있으면 매프레임 Canvas를 확인