플레이어블 그래프(Playable Graph)는 게임 오브젝트 또는 컴포넌트에 결속된 플레이어블 출력 세트를 정의합니다. 플레이어블 그래프는 플레이어블 세트와 각 플레이어블의 관계도 정의합니다. 예제는 그림 1을 참조하십시오.
플레이어블 그래프는 플레이어블과 플레이어블 출력의 수명 주기를 책임집니다. 플레이어블 그래프를 사용하여 플레이어블을 생성하고 연결하고 파괴할 수 있습니다.
그림 1에서 플레이어블 그래프를 표시할 때 이름을 간결하게 표시하기 위해 그래프 모드의 이름에서 “Playable”이라는 용어를 제거했습니다. 예를 들어 이름이 “AnimationClipPlayable”인 노드는 “AnimationClip”으로 표시되어 있습니다.
플레이어블은 IPlayable 인터페이스를 구현하는 C# 구조체이며, 다른 플레이어블과의 관계를 정의하는 데 사용됩니다. 이와 마찬가지로 플레이어블 출력은 IPlayableOutput을 구현하는 C# 구조체이며, 플레이어블 그래프의 출력을 정의하는 데 사용됩니다.
그림 2에서는 가장 일반적인 코어 플레이어블 타입을 확인할 수 있고, 그림 3에서는 코어 플레이어블 출력 타입을 확인할 수 있습니다.
플레이어블 코어 타입과 플레이어블 출력 타입은 C# 구조체로 구현되어 메모리가 가비지 컬렉션에 할당되는 것을 방지합니다.
‘Playable’은 모든 플레이어블의 기본 타입입니다. 즉, 플레이어블을 항상 ‘Playable’에 아무런 문제없이 보낼 수 있습니다. 하지만 그 반대는 성립하지 않으며, ‘Playable’을 호환되지 않은 타입에 보내면 예외가 발생합니다. ‘Playable’로 플레이어블에서 실행할 수 있는 모든 기본 메서드도 정의할 수 있습니다. 특정 타입의 메서드를 사용하려면 플레이어블을 적절한 타입에 할당해야 합니다.
‘PlayableOutput’도 마찬가지로 모든 플레이어블 출력의 기본 타입이고, ‘PlayableOutput’으로 기본 메서드를 정의할 수 있습니다.
참고: Playable
과 PlayableOutput
은 메서드를 많이 노출하지 않습니다. 그 대신 ‘PlayableExtensions’ 및 ‘PlayableOutputExtensions’ 정적 클래스가 확장 메서드를 제공합니다.
모든 비추상적인 플레이어블에는 해당 타입의 플레이어블을 생성하는 공용 정적 메서드인 Create()
가 있습니다. ‘Create()’ 메서드는 항상 PlayableGraph를 첫 번째 파라미터로 취하고, 해당 그래프가 새로 생성되는 플레이어블을 소유합니다. 일부 플레이어블 타입에는 추가 파라미터가 필요할 수 있습니다. 비추상적인 플레이어블 출력도 Create()
메서드를 노출합니다.
유효한 플레이어블 출력을 플레이어블에 연결해야 합니다. 플레이어블 출력이 플레이어블에 연결되지 않으면 플레이어블 출력은 아무런 일도 하지 않습니다. 플레이어블 출력을 플레이어블에 연결하려면 PlayableOutput.SetSourcePlayable()
메서드를 사용해야 합니다. 연결된 플레이어블은 해당 플레이어블 출력에 대해 플레이어블 트리의 루트 역할을 합니다.
두 플레이어블을 하나로 연결하려면 PlayableGraph.Connect()
메서드를 사용합니다. 일부 플레이어블에는 입력이 포함될 수 없습니다.
PlayableGraph.Create()
정적 메서드를 사용하여 PlayableGraph를 생성합니다.
PlayableGraph.Play()
메서드로 PlayableGraph를 재생합니다.
PlayableGraph.Stop()
메서드로 PlayableGraph의 재생을 중지합니다.
PlayableGraph.Evaluate()
메서드로 PlayableGraph의 상태를 특정 시간에 평가합니다.
PlayableGraph.Destroy()
메서드로 PlayableGraph를 수동으로 파괴합니다. 이 메서드는 PlayableGraph로 생성된 모든 플레이어블과 플레이어블 출력을 자동으로 파괴합니다. PlayableGraph를 파괴하려면 이 파괴 메서드를 수동으로 호출해야 합니다. 그렇지 않으면 Unity 에디터에서 오류 메시지가 나타납니다.
2017–07–04 페이지 게시됨
Unity 2017.1의 새로운 기능 NewIn20171
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.