---
title: "Animator 는 붙어 있는 동안 계속 일한다"
description: "UI 를 움직이는 방법은 애니메이션 클립과 코드 두 갈래입니다. Animator 가 매 프레임 하는 일, 무엇을 움직이면 무엇이 다시 도는지, 시안에서 시간과 이징을 어떻게 넘기는지를 그림으로 봅니다."
author: "유니얼"
pubDate: 2026-09-17
category: "game-dev/unity/ui"
tags: ["Unity", "UI", "uGUI"]
canonical: https://blog.unialgames.com/posts/unity-ui-animation/
---
팝업이 아래에서 올라오고, 버튼이 눌리며 살짝 줄었다 돌아오고, 획득한 숫자가 올라갑니다. 시안에서는 "0.2초, 부드럽게" 한 줄이지만 Unity 에서는 **만드는 방법이 두 갈래** 이고 비용도 다릅니다.

## 움직이는 방법은 두 가지입니다

<x-tabs>
<figure class="diagram" data-tab="애니메이션 클립으로">
<svg viewBox="0 0 680 230" role="img" aria-label="애니메이션 클립으로 움직이는 방법">
<rect x="30" y="40" width="180" height="80" rx="6" fill="var(--bg)" stroke="var(--border)" stroke-width="1.5"></rect><text x="44" y="64" font-size="13" fill="var(--text)">애니메이션 클립</text><text x="44" y="86" font-size="11" fill="var(--text-muted)">시간마다 값을 찍어 둔 것</text><text x="44" y="104" font-size="11" fill="var(--text-muted)">에디터에서 만듭니다</text>
<line x1="216" y1="80" x2="245" y2="80" stroke="var(--text-muted)" stroke-width="1.5"></line><polygon points="245,75 254,80 245,85" fill="var(--text-muted)"></polygon>
<rect x="260" y="40" width="180" height="80" rx="6" fill="var(--bg)" stroke="var(--border)" stroke-width="1.5"></rect><text x="274" y="64" font-size="13" fill="var(--text)">Animator</text><text x="274" y="86" font-size="11" fill="var(--text-muted)">어떤 클립을 언제 재생할지</text><text x="274" y="104" font-size="11" fill="var(--text-muted)">상태와 전환으로 관리</text>
<line x1="446" y1="80" x2="475" y2="80" stroke="var(--text-muted)" stroke-width="1.5"></line><polygon points="475,75 484,80 475,85" fill="var(--text-muted)"></polygon>
<rect x="490" y="40" width="160" height="80" rx="6" fill="var(--accent-soft)" stroke="var(--accent)" stroke-width="1.5"></rect><text x="504" y="64" font-size="13" fill="var(--text)">UI 값</text><text x="504" y="86" font-size="11" fill="var(--text-muted)">자리, 크기, 색 …</text>
<text x="30" y="156" font-size="12" fill="var(--text)">복잡한 연출과 상태 전환에 좋습니다. 디자이너가 에디터에서 직접 만질 수 있습니다.</text>
<text x="30" y="178" font-size="12" fill="var(--warn)">붙어 있는 동안 매 프레임 일합니다. 값이 안 바뀌어도 그렇습니다.</text>
<text x="30" y="200" font-size="12" fill="var(--text-muted)">상시로 켜 두는 화면보다는, 연출이 있는 순간에만 켜는 쪽이 맞습니다.</text>
</svg>
<figcaption>클립과 Animator 로 만드는 방법입니다.</figcaption>
</figure>
<figure class="diagram" data-tab="코드로 값을 바꿔서">
<svg viewBox="0 0 680 230" role="img" aria-label="코드로 값을 바꿔 움직이는 방법">
<rect x="30" y="40" width="180" height="80" rx="6" fill="var(--bg)" stroke="var(--border)" stroke-width="1.5"></rect><text x="44" y="64" font-size="13" fill="var(--text)">시작 값과 끝 값</text><text x="44" y="86" font-size="11" fill="var(--text-muted)">0.2초 동안</text><text x="44" y="104" font-size="11" fill="var(--text-muted)">아래에서 위로</text>
<line x1="216" y1="80" x2="245" y2="80" stroke="var(--text-muted)" stroke-width="1.5"></line><polygon points="245,75 254,80 245,85" fill="var(--text-muted)"></polygon>
<rect x="260" y="40" width="180" height="80" rx="6" fill="var(--bg)" stroke="var(--border)" stroke-width="1.5"></rect><text x="274" y="64" font-size="13" fill="var(--text)">코드가 계산</text><text x="274" y="86" font-size="11" fill="var(--text-muted)">시간에 맞춰 값을</text><text x="274" y="104" font-size="11" fill="var(--text-muted)">직접 넣습니다</text>
<line x1="446" y1="80" x2="475" y2="80" stroke="var(--text-muted)" stroke-width="1.5"></line><polygon points="475,75 484,80 475,85" fill="var(--text-muted)"></polygon>
<rect x="490" y="40" width="160" height="80" rx="6" fill="var(--accent-soft)" stroke="var(--accent)" stroke-width="1.5"></rect><text x="504" y="64" font-size="13" fill="var(--text)">UI 값</text><text x="504" y="86" font-size="11" fill="var(--text-muted)">자리, 크기, 색 …</text>
<text x="30" y="156" font-size="12" fill="var(--text)">한 값을 A 에서 B 로 옮기는 단순한 연출에 좋습니다. 끝나면 아무 일도 안 합니다.</text>
<text x="30" y="178" font-size="12" fill="var(--text-muted)">에디터에 그림으로 남지 않아서, 시안의 값이 코드 안으로 들어갑니다.</text>
<text x="30" y="200" font-size="12" fill="var(--text-muted)">시간과 이징을 시안에 적어 주면 그대로 옮길 수 있습니다.</text>
</svg>
<figcaption>시작 값과 끝 값을 정해 두고 코드가 채우는 방법입니다.</figcaption>
</figure>
</x-tabs>

- **애니메이션 클립** 은 시간마다 값을 찍어 둔 것입니다. Animator 가 어떤 클립을 언제 재생할지 관리합니다. 여러 값이 같이 움직이는 복잡한 연출에 맞고, 에디터에서 눈으로 만들 수 있습니다
- **코드로 값을 바꾸는 방법** 은 시작 값과 끝 값, 시간, 이징을 정해 두고 그 사이를 채웁니다. 한 값을 A 에서 B 로 옮기는 단순한 연출에 맞습니다

둘 다 결과는 같습니다. 차이는 **안 움직이는 동안 무엇을 하고 있는가** 입니다.

## Animator 는 값이 그대로여도 매 프레임 일합니다

<figure class="diagram">
<svg viewBox="0 0 680 250" role="img" aria-label="Animator 가 붙어 있으면 값이 그대로여도 매 프레임 다시 그릴 것으로 표시된다">
<text x="24" y="26" font-size="13" fill="var(--text)">애니메이션이 끝난 뒤의 프레임들</text>
<rect x="30" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="56" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="56" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">1</text>
<rect x="92" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="118" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="118" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">2</text>
<rect x="154" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="180" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="180" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">3</text>
<rect x="216" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="242" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="242" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">4</text>
<rect x="278" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="304" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="304" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">5</text>
<rect x="340" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="366" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="366" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">6</text>
<rect x="402" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="428" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="428" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">7</text>
<rect x="464" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="490" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="490" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">8</text>
<rect x="526" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="552" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="552" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">9</text>
<rect x="588" y="46" width="52" height="52" rx="5" fill="var(--warn)" fill-opacity="0.18" stroke="var(--warn)"></rect>
<text x="614" y="78" font-size="16" text-anchor="middle" fill="var(--warn)">!</text>
<text x="614" y="114" font-size="10" text-anchor="middle" fill="var(--text-muted)">10</text>
<text x="24" y="146" font-size="12" fill="var(--warn)">Animator 가 붙어 있으면 값이 그대로여도 매 프레임 "다시 봐야 함" 으로 표시됩니다.</text>
<text x="24" y="168" font-size="12" fill="var(--text-muted)">Unity 문서에도 "값이 변하지 않아도 매 프레임 dirty 로 만든다" 고 적혀 있습니다.</text>
<text x="24" y="200" font-size="13" fill="var(--text)">그리고 한 요소가 바뀌면 그 캔버스 전체를 다시 봅니다.</text>
<text x="24" y="222" font-size="12" fill="var(--text-muted)">그래서 자주 움직이는 것과 가만히 있는 것을 다른 캔버스로 나눕니다.</text>
</svg>
<figcaption>Animator 가 붙어 있으면 값이 그대로여도 매 프레임 표시가 남습니다.</figcaption>
</figure>

Unity 문서에 이렇게 적혀 있습니다. **"Animator 는 애니메이션의 값이 바뀌지 않아도 매 프레임 그 요소를 다시 봐야 할 것으로 표시한다."** 그리고 **"한 요소라도 바뀌면 그 캔버스 전체를 다시 분석한다"** 고도 되어 있습니다.

두 문장을 합치면 이렇게 됩니다.

- 가만히 있는 화면에 Animator 가 하나 붙어 있으면 **그 캔버스가 매 프레임 다시 계산됩니다**
- 그 캔버스에 글자와 이미지가 많을수록 그 비용이 큽니다
- 같은 문서가 **자주 안 변하거나 어떤 일이 있을 때만 변하는 것은 코드나 트윈으로 만들라고** 권합니다

그래서 실무에서는 이렇게 나눕니다.

- **연출이 복잡하고 한 번만 재생되는 것** (팝업 등장, 보상 연출): 애니메이션 클립. 끝나면 꺼 둡니다
- **상시 화면에서 값 하나만 움직이는 것** (버튼 눌림, 숫자 올라가기, 페이드): 코드 쪽
- **계속 움직여야 하는 장식** (반짝이는 아이콘 같은 것): 별도 캔버스로 떼어 놓습니다

## 무엇을 움직이면 무엇이 다시 도는가

<x-anim>
<script type="application/json">
{
  "label": "무엇을 움직이면 무엇이 다시 도는가",
  "note": "속성마다 다시 도는 단계가 다릅니다."
}
</script>
</x-anim>

- **크기를 바꾸는 것이 가장 비쌉니다.** 메시를 다시 만들고 레이아웃도 다시 계산합니다
- **커졌다 작아지는 연출은 크기 대신 스케일** 로 만들면 레이아웃과 메시를 건드리지 않습니다
- **색을 바꾸면 그 요소의 메시를 다시 만듭니다.** 글자처럼 정점이 많은 것이 매 프레임 물들면 그만큼 일이 늘어납니다
- **페이드는 Canvas Group 의 알파** 로 하면 메시를 다시 만들지 않습니다. 다만 그 값은 배치에 들어가서, 페이드가 도는 동안 그 캔버스는 매 프레임 다시 묶입니다. 요소마다 알파를 내리는 것보다는 낫지만 공짜는 아닙니다
- **레이아웃 그룹 안에서** 자리를 움직이면 그룹이 형제들 자리까지 다시 계산합니다. 움직일 요소는 그룹 밖으로 빼거나, 그룹의 자식이 아닌 자리에 둡니다

## 버튼 상태를 애니메이션으로 만들 때

버튼의 전환 방식을 애니메이션으로 두면 상태마다 재생할 것을 Animator 가 정합니다. 이때 **상태 이름이 이미 정해져 있습니다.**

- 기본 이름은 `Normal`, `Highlighted`, `Pressed`, `Selected`, `Disabled` 입니다
- 버튼마다 Animator 와 클립이 필요합니다. 버튼이 많은 화면이면 그만큼 붙습니다
- 색만 바뀌는 버튼이라면 애니메이션까지 갈 이유가 없습니다. **눌렀을 때 살짝 줄었다 돌아오는 것처럼 움직임이 있을 때** 쓰는 선택입니다

## 시간과 이징을 시안에서 넘기는 법

<figure class="diagram">
<svg viewBox="0 0 680 250" role="img" aria-label="Linear, Ease In, Ease Out, Ease In Out 네 가지 이징 곡선과 각각의 느낌">
<text x="30" y="28" font-size="13" fill="var(--text)">Linear</text>
<rect x="30" y="40" width="120" height="120" rx="4" fill="var(--bg)" stroke="var(--border)"></rect>
<line x1="30" y1="80" x2="150" y2="80" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="70" y1="40" x2="70" y2="160" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="30" y1="120" x2="150" y2="120" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="110" y1="40" x2="110" y2="160" stroke="var(--border)" stroke-opacity="0.5"></line>
<path d="M 30.0,160.0 L 33.0,157.0 L 36.0,154.0 L 39.0,151.0 L 42.0,148.0 L 45.0,145.0 L 48.0,142.0 L 51.0,139.0 L 54.0,136.0 L 57.0,133.0 L 60.0,130.0 L 63.0,127.0 L 66.0,124.0 L 69.0,121.0 L 72.0,118.0 L 75.0,115.0 L 78.0,112.0 L 81.0,109.0 L 84.0,106.0 L 87.0,103.0 L 90.0,100.0 L 93.0,97.0 L 96.0,94.0 L 99.0,91.0 L 102.0,88.0 L 105.0,85.0 L 108.0,82.0 L 111.0,79.0 L 114.0,76.0 L 117.0,73.0 L 120.0,70.0 L 123.0,67.0 L 126.0,64.0 L 129.0,61.0 L 132.0,58.0 L 135.0,55.0 L 138.0,52.0 L 141.0,49.0 L 144.0,46.0 L 147.0,43.0 L 150.0,40.0" fill="none" stroke="var(--text-muted)" stroke-width="2"></path>
<text x="30" y="180" font-size="11" fill="var(--text-muted)">그대로</text>
<text x="195" y="28" font-size="13" fill="var(--text)">Ease In</text>
<rect x="195" y="40" width="120" height="120" rx="4" fill="var(--bg)" stroke="var(--border)"></rect>
<line x1="195" y1="80" x2="315" y2="80" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="235" y1="40" x2="235" y2="160" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="195" y1="120" x2="315" y2="120" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="275" y1="40" x2="275" y2="160" stroke="var(--border)" stroke-opacity="0.5"></line>
<path d="M 195.0,160.0 L 198.0,160.0 L 201.0,160.0 L 204.0,159.9 L 207.0,159.9 L 210.0,159.8 L 213.0,159.6 L 216.0,159.4 L 219.0,159.0 L 222.0,158.6 L 225.0,158.1 L 228.0,157.5 L 231.0,156.8 L 234.0,155.9 L 237.0,154.9 L 240.0,153.7 L 243.0,152.3 L 246.0,150.8 L 249.0,149.1 L 252.0,147.1 L 255.0,145.0 L 258.0,142.6 L 261.0,140.0 L 264.0,137.2 L 267.0,134.1 L 270.0,130.7 L 273.0,127.0 L 276.0,123.1 L 279.0,118.8 L 282.0,114.3 L 285.0,109.4 L 288.0,104.1 L 291.0,98.6 L 294.0,92.6 L 297.0,86.3 L 300.0,79.6 L 303.0,72.5 L 306.0,65.0 L 309.0,57.1 L 312.0,48.8 L 315.0,40.0" fill="none" stroke="var(--text-muted)" stroke-width="2"></path>
<text x="195" y="180" font-size="11" fill="var(--text-muted)">천천히 시작</text>
<text x="360" y="28" font-size="13" fill="var(--text)">Ease Out</text>
<rect x="360" y="40" width="120" height="120" rx="4" fill="var(--bg)" stroke="var(--border)"></rect>
<line x1="360" y1="80" x2="480" y2="80" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="400" y1="40" x2="400" y2="160" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="360" y1="120" x2="480" y2="120" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="440" y1="40" x2="440" y2="160" stroke="var(--border)" stroke-opacity="0.5"></line>
<path d="M 360.0,160.0 L 363.0,151.2 L 366.0,142.9 L 369.0,135.0 L 372.0,127.5 L 375.0,120.4 L 378.0,113.7 L 381.0,107.4 L 384.0,101.4 L 387.0,95.9 L 390.0,90.6 L 393.0,85.7 L 396.0,81.2 L 399.0,76.9 L 402.0,73.0 L 405.0,69.3 L 408.0,65.9 L 411.0,62.8 L 414.0,60.0 L 417.0,57.4 L 420.0,55.0 L 423.0,52.9 L 426.0,50.9 L 429.0,49.2 L 432.0,47.7 L 435.0,46.3 L 438.0,45.1 L 441.0,44.1 L 444.0,43.2 L 447.0,42.5 L 450.0,41.9 L 453.0,41.4 L 456.0,41.0 L 459.0,40.6 L 462.0,40.4 L 465.0,40.2 L 468.0,40.1 L 471.0,40.1 L 474.0,40.0 L 477.0,40.0 L 480.0,40.0" fill="none" stroke="var(--accent)" stroke-width="2"></path>
<text x="360" y="180" font-size="11" fill="var(--text-muted)">빠르게 시작해서 멈춤</text>
<text x="525" y="28" font-size="13" fill="var(--text)">Ease In Out</text>
<rect x="525" y="40" width="120" height="120" rx="4" fill="var(--bg)" stroke="var(--border)"></rect>
<line x1="525" y1="80" x2="645" y2="80" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="565" y1="40" x2="565" y2="160" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="525" y1="120" x2="645" y2="120" stroke="var(--border)" stroke-opacity="0.5"></line>
<line x1="605" y1="40" x2="605" y2="160" stroke="var(--border)" stroke-opacity="0.5"></line>
<path d="M 525.0,160.0 L 528.0,160.0 L 531.0,159.9 L 534.0,159.8 L 537.0,159.5 L 540.0,159.1 L 543.0,158.4 L 546.0,157.4 L 549.0,156.2 L 552.0,154.5 L 555.0,152.5 L 558.0,150.0 L 561.0,147.0 L 564.0,143.5 L 567.0,139.4 L 570.0,134.7 L 573.0,129.3 L 576.0,123.2 L 579.0,116.3 L 582.0,108.6 L 585.0,100.0 L 588.0,91.4 L 591.0,83.7 L 594.0,76.8 L 597.0,70.7 L 600.0,65.3 L 603.0,60.6 L 606.0,56.5 L 609.0,53.0 L 612.0,50.0 L 615.0,47.5 L 618.0,45.5 L 621.0,43.8 L 624.0,42.6 L 627.0,41.6 L 630.0,40.9 L 633.0,40.5 L 636.0,40.2 L 639.0,40.1 L 642.0,40.0 L 645.0,40.0" fill="none" stroke="var(--text-muted)" stroke-width="2"></path>
<text x="525" y="180" font-size="11" fill="var(--text-muted)">양쪽이 부드럽게</text>
<text x="30" y="212" font-size="12" fill="var(--text)">UI 에서 가장 많이 쓰는 것은 Ease Out 입니다. 눌렀을 때 바로 반응하고 부드럽게 멈춥니다.</text>
<text x="30" y="234" font-size="12" fill="var(--text-muted)">시안에는 곡선 그림 대신 이름과 시간만 적어 주시면 됩니다. 예: 0.2초, Ease Out.</text>
</svg>
<figcaption>가장 많이 쓰는 것은 Ease Out 입니다.</figcaption>
</figure>

Unity 쪽에서 필요한 값은 네 가지뿐입니다.

- **무엇이 움직이는가**: 자리인지 크기인지 투명도인지
- **얼마 동안**: 초 단위로. 0.15, 0.2, 0.3 처럼
- **어떤 곡선으로**: Ease Out, Ease In Out 같은 이름
- **시작 값과 끝 값**: 어디에서 어디로, 얼마에서 얼마로

"자연스럽게", "통통 튀게" 같은 말로는 옮길 수 없습니다. **"아래로 20 만큼 내려간 자리에서 제자리로, 0.2초, Ease Out"** 이면 그대로 만들어집니다.

통통 튀는 느낌이 필요하면 그것도 이름이 있습니다. 끝에서 살짝 넘어갔다 돌아오는 곡선, 늘어났다 줄어드는 곡선 같은 것들입니다. **그 느낌을 참고할 영상이나 예시를 하나 주시면** 제일 빠릅니다.

## 끝난 뒤를 정해 주세요

애니메이션은 시작보다 **끝이 문제가 됩니다.**

- 팝업이 닫히는 연출이 끝나면 그 오브젝트를 **끄는지 지우는지**
- 반복 연출이 화면을 벗어나면 **멈추는지 계속 도는지**
- 연출 중에 같은 버튼을 또 누르면 **처음부터 다시 재생하는지, 무시하는지**
- 연출 중에 화면을 나가 버리면 **중간에 끊기는지, 끝까지 재생하고 나가는지**

이건 그림으로 그릴 수 없는 것이라 시안에 한 줄씩 적어 주셔야 합니다.

## 시안을 넘길 때 적어 주면 좋은 것

| 항목 | 적어 줄 것 |
| --- | --- |
| 무엇이 | 자리, 크기, 투명도, 색 중 무엇이 움직이는지 |
| 얼마나 | 시간(초)과 시작 값, 끝 값 |
| 어떤 곡선 | Ease Out 처럼 이름으로. 특별한 느낌이면 참고 영상 |
| 딜레이 | 여러 개가 차례로 나타나면 몇 초씩 밀리는지 |
| 반복 | 한 번인지, 계속 도는지, 몇 번인지 |
| 끝난 뒤 | 꺼지는지, 남는지, 다시 누르면 어떻게 되는지 |
| 상시 여부 | 화면에 늘 떠 있는 연출인지, 어떤 순간에만 나오는지 |

## 정리

- UI 를 움직이는 방법은 애니메이션 클립과 코드 두 갈래입니다. 결과는 같고 안 움직일 때의 비용이 다릅니다
- Animator 는 값이 그대로여도 매 프레임 그 요소를 다시 볼 것으로 표시합니다. 한 요소가 바뀌면 캔버스 전체를 다시 봅니다
- 복잡한 일회성 연출은 클립, 값 하나짜리 상시 연출은 코드 쪽이 맞습니다
- 크기를 움직이면 메시와 레이아웃을 다시 합니다. 스케일과 Canvas Group 알파는 그 둘을 건드리지 않습니다. 다만 셋 다 캔버스는 다시 묶습니다
- 버튼 상태 애니메이션은 이름이 정해져 있습니다. 색만 바뀌면 애니메이션까지 갈 이유가 없습니다
- 시안에는 무엇이, 얼마 동안, 어떤 곡선으로, 어디에서 어디로를 적어 주세요. 그리고 끝난 뒤를 정해 주세요