Unity Timeline
에디터에서 만든 컷씬 데이터를 런타임에서 PlayableGraph로 실행하는 시스템
간단한 예제부터, 컷씬 만들어보기
1. Timeline으로 Directional Light 색생변경
큐브 충돌 시 라이트 조명을 변경되도록 했다.


public class LightControlAsset : PlayableAsset
{
public ExposedReference<Light> light;
public Color color = Color.white;
public float intensity = 1f;
public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
{
var playable = ScriptPlayable<LightControlBehaviour>.Create(graph);
var behaviour = playable.GetBehaviour();
behaviour.light = light.Resolve(graph.GetResolver());
behaviour.color = color;
behaviour.intensity = intensity;
return playable;
}
}
ScriptPlayable은 사용자 정의 PlayableBehaviour를 PlayableGraph에서 실행 가능하게 감싸는 래퍼
graph.GetResolver는 Timeline에서 ExposedReference로 바인딩된 실제 씬 오브젝트를 런타임에 해석하기 위한 컨텍스다
[Serializable]
public class LightControlBehaviour : PlayableBehaviour
{
public Light light;
public Color color = Color.white;
public float intensity = 1f;
public float bounceIntensity = 1f;
public float range = 10f;
public override void ProcessFrame(Playable playable, FrameData info, object playerData)
{
//Light light = playerData as Light;
if (light != null)
{
light.color = color;
light.intensity = intensity;
light.bounceIntensity = bounceIntensity;
light.range = range;
}
}
}
2. 간단 연출 컷씬
추가적으로 알야할것
주요 키워드정리
PlayableAsset : 컷씬 데이터 (에셋, 직렬화 대상)
PlayableBehaviour : 실행 로직 (런타임 객체)
Playable : Behaviour를 감싼 실행 단위
PlayableGraph : 전체 실행 그래프 (Timeline 재생기)
Track : Playable을 어떻게 묶고 연결할지 정의
FrameData : 매 프레임 실행 컨텍스트 정보
PlayableAsset / PlayableBehaviour 씬 오브젝트가 아니다.
PlayableAsset -> ScriptableObject (에셋, 디스크에 있음), 에셋메모리
PlayableBehaviour -> 런타임에 새로 생성되는 객체 (Managed Heap)
GC 대상은 PlayableBehaviour, 컷씬 종료 시 Graph 파괴, 같이 정리된다.
ProcessFrame은 언제(호출 주기) 호출될까?
PlayableGraph 평가 시
→ Director.Update()
→ Graph.Evaluate(deltaTime)
→ 각 Playable의 ProcessFrame 호출
MonoBehaviour.Update랑 같지 않음
ExposedReference란?
씬 오브젝트를 에셋에서 직접 참조하기 위한 우회 통로
참고
https://unity.com/kr/blog/engine-platform/extending-timeline-practical-guide
'Unity > 애니메이션' 카테고리의 다른 글
| Unity) Timeline, 컷씬만들기- 2 (0) | 2026.01.30 |
|---|---|
| 유니티) Humanoid Avatars (애니메이션 파트 나누기) (0) | 2019.01.06 |
| 유니티) Animator Sub-state Machine hierarchies 애니메이션 하위구조 만들기 (0) | 2018.12.30 |
| 유니티) Blend Trees 에니메이션 디테일주기 (0) | 2018.12.28 |
| 유니티) Animator Controller Layers (0) | 2018.12.23 |
