즉, Batches가 낮을 수록 좋다
Batches를 낮추는 방법중에 하나가 sprite atlas
를 사용하는 것이다
여러장의 Sprite 이미지를 한 장의 텍스처에 모아 두고 사용하는 것으로 Unity는 Sprite Packer(Legacy)와 Sprite Atlas를 제공한다
Texture Type이 Sprite (2D and UI)인 이미지 에셋을 Hierarchy View로 Drag & Drop하면 해당 이미지 에셋을 출력하는 2D Sprite 오브젝트가 생성된다
즉,
게임 내에 사용되는 이미지를 POT단위로 만드는 것이 불가능하기 때문에 한 캐릭터의 다양한 동작 애니메이션을 하나의 이미지에 저장하는 것을 권장한다
Sprite Object의 Sprite Renderer 컴포넌트의 이미지를 주기적으로 교제하는 것이다
Animation Asset에 하나의 애니메이션으로 구성되는 텍스처를 등록하는 View
하나의 오브젝트가 가질 수 있는 애니메이션을 묶어서 관리하는 파일
Animator Asset들을 관리하는 파일, 하나의 오브젝트에서 사용되는 애니메이션들을 묶어서 관리하게 된다
생성 방법 : Project View - "+" - Animator Controller
Conditions
Has Exit Time
현재 상태전이(Transition)의 조건(Conditions)을 만족했을 때 바로 동작을 변경할지 해당 동작을 끝까지 재생하고 변경할지 설정
- true : 해당 동작을 마저 재생하고 동작을 변경하다
- false : Conditions를 만족하는 순간 동작을 변경한다
게임 오브젝트의 애니메이션 재생, 교체 등을 제어하는 역할을 수행
Animator
Animator View, Animation View의 내용을 수정할 때는 Project View에 있는 Animator Controller, Animation 에셋을 선택하는 것이 아니라 그 에셋들이 등록되어 있는 게임 오브젝트, 프리팹을 선택해야한다
Animation
Samples : 2D 애니메이션의 프레임 재생 속도 (값이 낮을수록 재생이 느리게 된다)
(Show Sample Rate를 체크해야 보이는 옵션)
animator 매서드
Animator의 네가지 종류의 파라미터에 접근해서 변수 값을 바꿀 수 있는 함수 제공
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayController : MonoBehaviour
{
private Animator animator;
private void Awake()
{
animator = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
animator.SetTrigger("isDie");
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayController : MonoBehaviour
{
private Animator animator;
private void Awake()
{
animator = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
animator.SetTrigger("isDie");
}
}
public void OnDieEvent()
{
Debug.Log("End of Die Animataion");
}
}