타임라인 생성하기
아래에 나와 있는 단계를 따르면 액터 블루프린트에서 나만의 타임라인 컴포넌트 를 만들 수 있습니다.
-
콘텐츠 브라우저(Content Browser) 에서 추가(+)(Add(+)) > 블루프린트 클래스(Blueprint Class) 를 선택하고 이름이 BP_TimelineActor 인 새 액터 블루프린트를 생성합니다. 부모 클래스 선택(Pick Parent Class) 대화창이 나타납니다.
-
클래스 디폴트(Class Defaults) 에서 이벤트 그래프 를 우클릭하여 블루프린트 컨텍스트 메뉴(Blueprint Context Menu) 를 표시한 후 타임라인 추가(Add Timeline) 를 검색하여 선택합니다.
이벤트 그래프에 새로운 타임라인 노드가 나타납니다.

블루프린트 클래스에 추가된 타임라인은 내 블루프린트(My Blueprint) 탭의 목록에서 확인할 수 있습니다.

타임라인 변수
생성한 타임라인은 내 블루프린트(My Blueprint) 탭에서 변수로 사용할 수 있습니다. 이는 타임라인 컴포넌트에 레퍼런스를 제공하기 위한 것으로, 타임라인 노드를 활용할 때 유용합니다. 이러한 노드는 재생 속도와 같은 타임라인의 특정 부분에 액세스하기 위해 존재합니다.

예를 들어, Get Timeline 0 변수를 사용하여 해당 타임라인의 현재 재생 속도 값을 쿼리할 수 있습니다.

이러한 노드는 다양한 종류가 존재하며, 값을 쿼리하거나 타임라인 노드의 동작을 제어합니다. 사용 가능한 타임라인 노드 및 해당하는 기능의 전체 목록은 타임라인 노드 페이지를 참조하세요.
타임라인 이벤트 생성하기
타임라인 이벤트 는 타임라인 컴포넌트 에 나만의 커스텀 이벤트나 함수를 처리하는 기능을 제공합니다. 나만의 이벤트를 실행하는 방법에 대한 예시는 다음 단계를 따르세요.
-
BP_TimelineActor 를 열고 Begin Play 노드의 실행 핀 을 드래그하여 타임라인 추가(Add Timeline) 를 찾아 선택합니다.
Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name="K2Node_Event_0" EventReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveBeginPlay") bOverrideFunction=True NodePosY=-128 bCommentBubblePinned=True NodeGuid=5FBA33CC4CC8CB4ED0DE10802AEC6150 CustomProperties Pin (PinId=04DC4F854BB6BB3B469928A3D262B532,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveBeginPlay"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=493D6ECC48C47DAF19E698BF937AB787,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Timeline_0 7B94569E4931CB05569B779BA7053DE2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_Timeline Name="K2Node_Timeline_0" TimelineName="Timeline_0" TimelineGuid=B0C028EF4B7640BD9A291396443D800F NodePosX=176 NodePosY=-128 bCanRenameNode=True NodeGuid=BCDF4E444AB5A56E964C139A660FDF18 CustomProperties Pin (PinId=7B94569E4931CB05569B779BA7053DE2,PinName="Play",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Event_0 493D6ECC48C47DAF19E698BF937AB787,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=CF9431C540C4D9CADAD01289B634C7DA,PinName="PlayFromStart",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=CDD00FA848E9F24904234F9B8A2E8B7D,PinName="Stop",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=61F7A596408CC583855DF588B8463076,PinName="Reverse",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=00634A8E48E5B37D2154DABFB0190357,PinName="ReverseFromEnd",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=3A270B804B33D15C47BF2E8F746A3F85,PinName="Update",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AEAD3EDD4B931BA678F86DBDD5D365C2,PinName="Finished",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_3 1941A1CD45D63F98C92FB1AA49279290,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=517C697540A7A470A66B2E84CEF8B9C4,PinName="SetNewTime",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=DEB07A6C4E1D6E9A79A118B3A5A3D61B,PinName="NewTime",PinType.PinCategory="real",PinType.PinSubCategory="float",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=64A7BF3A4367BB365672A1BFA7649768,PinName="Direction",Direction="EGPD_Output",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=Enum'"/Script/Engine.ETimelineDirection"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object -
Timeline_0 노드의 Finished 핀을 드래그하여 Print String 노드를 찾아 추가합니다. 텍스트 필드 에 스트링 'Timeline Finished' 를 입력합니다.
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_3" FunctionReference=(MemberParent=Class'"/Script/Engine.KismetSystemLibrary"',MemberName="PrintString") NodePosX=432 NodePosY=-128 AdvancedPinDisplay=Hidden EnabledState=DevelopmentOnly NodeGuid=C2E617C34EF5512E11FFEF9545AC379A CustomProperties Pin (PinId=1941A1CD45D63F98C92FB1AA49279290,PinName="execute",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Timeline_0 AEAD3EDD4B931BA678F86DBDD5D365C2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=B5FA1DB14BEC1B77DDD8D5A441E574DB,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=95EA3B1449CB53545C29F38249A31A77,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=FBE62274411FB583C9B4B1BD65745860,PinName="WorldContextObject",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=9158349E4DEA996B4FB05A8F2DBFFF76,PinName="InString",PinType.PinCategory="string",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Timeline Finished",AutogeneratedDefaultValue="Hello",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=6B2F94B04D075F64B11C199C7C838CA2,PinName="bPrintToScreen",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) CustomProperties Pin (PinId=0822BF624BA6180F7EB31A85A34FEB61,PinName="bPrintToLog",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) CustomProperties Pin (PinId=27EA7C2347F31C8175494F8E72C44102,PinName="TextColor",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=0.660000,B=1.000000,A=1.000000)",AutogeneratedDefaultValue="(R=0.000000,G=0.660000,B=1.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) CustomProperties Pin (PinId=313E4CB8477598702B012F977E1BE1E0,PinName="Duration",PinType.PinCategory="real",PinType.PinSubCategory="float",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="2.000000",AutogeneratedDefaultValue="2.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) CustomProperties Pin (PinId=8CA5AC9D4C201A05A96C4C8DBDB3E835,PinName="Key",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) End Object -
최종 블루프린트 스크립트는 다음과 같아야 합니다.
Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name="K2Node_Event_0" EventReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveBeginPlay") bOverrideFunction=True NodePosX=-16 NodePosY=-128 bCommentBubblePinned=True NodeGuid=5FBA33CC4CC8CB4ED0DE10802AEC6150 CustomProperties Pin (PinId=04DC4F854BB6BB3B469928A3D262B532,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class'"/Script/Engine.Actor"',MemberName="ReceiveBeginPlay"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=493D6ECC48C47DAF19E698BF937AB787,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Timeline_0 7B94569E4931CB05569B779BA7053DE2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_Timeline Name="K2Node_Timeline_0" TimelineName="Timeline_0" TimelineGuid=B0C028EF4B7640BD9A291396443D800F NodePosX=176 NodePosY=-128 bCanRenameNode=True NodeGuid=BCDF4E444AB5A56E964C139A660FDF18 CustomProperties Pin (PinId=7B94569E4931CB05569B779BA7053DE2,PinName="Play",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Event_0 493D6ECC48C47DAF19E698BF937AB787,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=CF9431C540C4D9CADAD01289B634C7DA,PinName="PlayFromStart",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=CDD00FA848E9F24904234F9B8A2E8B7D,PinName="Stop",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=61F7A596408CC583855DF588B8463076,PinName="Reverse",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=00634A8E48E5B37D2154DABFB0190357,PinName="ReverseFromEnd",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=3A270B804B33D15C47BF2E8F746A3F85,PinName="Update",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AEAD3EDD4B931BA678F86DBDD5D365C2,PinName="Finished",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_3 1941A1CD45D63F98C92FB1AA49279290,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=517C697540A7A470A66B2E84CEF8B9C4,PinName="SetNewTime",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=DEB07A6C4E1D6E9A79A118B3A5A3D61B,PinName="NewTime",PinType.PinCategory="real",PinType.PinSubCategory="float",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",AutogeneratedDefaultValue="0.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=64A7BF3A4367BB365672A1BFA7649768,PinName="Direction",Direction="EGPD_Output",PinType.PinCategory="byte",PinType.PinSubCategory="",PinType.PinSubCategoryObject=Enum'"/Script/Engine.ETimelineDirection"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_3" FunctionReference=(MemberParent=Class'"/Script/Engine.KismetSystemLibrary"',MemberName="PrintString") NodePosX=448 NodePosY=-128 AdvancedPinDisplay=Hidden EnabledState=DevelopmentOnly NodeGuid=C2E617C34EF5512E11FFEF9545AC379A CustomProperties Pin (PinId=1941A1CD45D63F98C92FB1AA49279290,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_Timeline_0 AEAD3EDD4B931BA678F86DBDD5D365C2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=B5FA1DB14BEC1B77DDD8D5A441E574DB,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=95EA3B1449CB53545C29F38249A31A77,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="타깃\nKismet 시스템 라이브러리 오브젝트 레퍼런스",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=Class'"/Script/Engine.KismetSystemLibrary"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject="/Script/Engine.Default__KismetSystemLibrary",PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=FBE62274411FB583C9B4B1BD65745860,PinName="WorldContextObject",PinToolTip="월드 컨텍스트 오브젝트\n오브젝트 레퍼런스",PinType.PinCategory="object",PinType.PinSubCategory="",PinType.PinSubCategoryObject=Class'"/Script/CoreUObject.Object"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=9158349E4DEA996B4FB05A8F2DBFFF76,PinName="InString",PinToolTip="인 스트링\n스트링\n\n로그에 인쇄할 스트링입니다",PinType.PinCategory="string",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Timeline Finished",AutogeneratedDefaultValue="Hello",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=6B2F94B04D075F64B11C199C7C838CA2,PinName="bPrintToScreen",PinToolTip="화면에 인쇄\n부울\n\n출력을 화면에 인쇄할지 여부입니다",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) CustomProperties Pin (PinId=0822BF624BA6180F7EB31A85A34FEB61,PinName="bPrintToLog",PinToolTip="로그에 인쇄\n부울\n\n출력을 로그에 인쇄할지 여부입니다",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="true",AutogeneratedDefaultValue="true",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) CustomProperties Pin (PinId=27EA7C2347F31C8175494F8E72C44102,PinName="TextColor",PinToolTip="텍스트 컬러\n선형 컬러 구조체\n\n텍스트 색을 지정합니다",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/CoreUObject.LinearColor"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=0.000000,G=0.660000,B=1.000000,A=1.000000)",AutogeneratedDefaultValue="(R=0.000000,G=0.660000,B=1.000000,A=1.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) CustomProperties Pin (PinId=313E4CB8477598702B012F977E1BE1E0,PinName="Duration",PinToolTip="경과시간\n플로트(싱글 정밀도)\n\n화면에 인쇄가 True인 경우 화면에 표시하는 시간입니다. 음수로 설정하면 환경 설정의 경과시간을 사용합니다.",PinType.PinCategory="real",PinType.PinSubCategory="float",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="2.000000",AutogeneratedDefaultValue="2.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) CustomProperties Pin (PinId=8CA5AC9D4C201A05A96C4C8DBDB3E835,PinName="Key",PinToolTip="키\n이름\n\n비어 있지 않은 키가 제공되면 메시지가 기존의 화면 메시지를 동일한 키로 대체합니다.",PinType.PinCategory="name",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None",AutogeneratedDefaultValue="None",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,) End Object -
컴파일(Compile) 과 저장(Save) 버튼을 클릭합니다.
-
블루프린트 에디터 를 닫고 콘텐츠 브라우저(Content Browser) 로 이동합니다. BP_TimelineActor 를 찾아 레벨 로 드래그합니다.
-
플레이(Play) 버튼을 클릭하여 결과를 확인합니다.
기본 타임라인 길이인 5초가 지난 후에는 뷰포트 왼쪽 모서리 상단에 '타임라인 완료됨(Timeline Finished)'이라는 텍스트가 나타납니다.
타임라인 이름변경하기
블루프린트에서 다수의 타임라인을 사용할 때는 각 타임라인의 이름을 알맞게 정하는 것이 중요합니다. 기본적으로 모든 타임라인의 이름은 'Timeline_n' 이며, 끝부분의 n 은 일련번호입니다. 그래프 탭 또는 내 블루프린트 탭 내에서 타임라인을 우클릭하고 이름변경(Rename) 을 선택하여 타임라인의 이름을 바꿀 수 있습니다.

타임라인 에디터 열기
타임라인을 만들기만 해서는 사용할 수 없으며, 수행할 것을 설정해야 합니다. 타임라인 편집에 대한 자세한 내용은 타임라인 편집 페이지를 참조하세요.
타임라인 생성하기
아래에 나와 있는 단계를 따르면 액터 클래스에서 나만의 타임라인 컴포넌트 를 만들고 인스턴스화할 수 있습니다.
-
C++ 클래스 폴더 로 이동하여 추가+(Add+) 를 클릭합니다. 드롭다운 메뉴에서 새로운 C++ 클래스(New C++ Class) 를 선택합니다.
-
액터(Actor) 클래스를 부모 클래스(Parent Class) 로 선택합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
- 생성된 액터 클래스의 이름을 Timeline Actor 로 지정합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
TimelineActor.h
파일로 이동하여 다음과 같은TimelineComponent
클래스 라이브러리를 포함합니다.
TimelineActor.h
#include "Components/TimelineComponent.h"
- TimelineActor 클래스 정의 내에 다음과 같은 클래스 선언을 구현합니다.
TimelineActor.h
protected:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UTimelineComponent* ExampleTimelineComp;
이 코드 샘플에서는 프로퍼티 지정자 태그, EditAnywhere, BlueprintReadWrite 를 사용합니다.
TimelineActor.cpp
파일로 이동한 뒤 TimelineActor 생성자ATimelineActor::ATimelineActor()
에 다음과 같은 코드를 추가합니다.
TimelineActor.cpp
ATimelineActor::ATimelineActor()
{
// 이 액터가 프레임마다 틱()을 호출하도록 설정. 필요하지 않다면 퍼포먼스 향상을 위해 이 기능을 끌 수 있습니다.
PrimaryActorTick.bCanEverTick = true;
ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent"));
}
-
코드를 컴파일(Compile) 합니다.
-
C++ 클래스 폴더 로 이동한 뒤 TimelineActor 를 우클릭하여 TimelineActor 클래스 기반 블루프린트를 생성합니다. 이름을 Bp_TimelineActor 로 지정합니다.
-
TimelineActor 블루프린트를 생성했다면 클래스 디폴트(Class Defaults) 를 볼 수 있습니다. 컴포넌트(Components) 탭에서 예제 타임라인 컴포넌트를 확인할 수 있습니다.
작업 중인 코드
TimelineActor.h
#pragma once
#include "Components/TimelineComponent.h"
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TimelineActor.generated.h"
UCLASS()
class CPPTIMELINE_API ATimelineActor : public AActor
{
GENERATED_BODY()
public:
// 이 액터 프로퍼티의 디폴트값 설정
ATimelineActor();
protected:
// 게임 시작 시 또는 스폰 시 호출
virtual void BeginPlay() override;
public:
// 모든 프레임에서 호출
virtual void Tick(float DeltaTime) override;
protected:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UTimelineComponent* ExampleTimelineComp;
};
TimelineActor.cpp
#include "TimelineActor.h"
// 디폴트 값 설정
ATimelineActor::ATimelineActor()
{
// 이 액터가 프레임마다 틱()을 호출하도록 설정. 필요하지 않다면 퍼포먼스 향상을 위해 이 기능을 끌 수 있습니다.
PrimaryActorTick.bCanEverTick = true;
ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent"));
}
// 게임 시작 시 또는 스폰 시 호출
void ATimelineActor::BeginPlay()
{
Super::BeginPlay();
}
// 모든 프레임에서 호출
void ATimelineActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
타임라인 변수
UProperty 지정자
를 사용하는 타임라인 컴포넌트를 C++에서 생성한 경우, 컴포넌트(Components) 탭에서 변수로 사용할 수 있습니다. 이는 블루프린트 스크립팅을 통해 타임라인 컴포넌트에
지속적인 반복작업을 수행하려는 디자이너에게 유용할 수 있습니다.

위 이미지는 블루프린트에서 타임라인의 현재 재생 속도 값을 구하기 위해 네이티브 C++ 타임라인 변수를 사용한 경우를 나타낸 것입니다.
사용 가능한 블루프린트 타임라인 노드 및 해당하는 기능의 전체 목록은 타임라인 노드 페이지를 참조하세요.
FTimeLineEvent 생성하기
타임라인 이벤트( FOnTimelineEvent
)는 타임라인 컴포넌트에 이벤트를 처리하는 기능을 제공하는 다이내믹 델리게이트입니다.
아래의 단계를 따라 타임라인 컴포넌트의 Finished 함수에 바인딩된 FTimeLineEvent
를 직접 만들 수 있습니다.
TimelineActor.h
파일로 이동한 뒤 클래스 정의(Class Definition) 에 다음과 같은 코드를 선언합니다.
TimelineActor.h
protected:
//Finished 이벤트를 처리할 함수에 대한 시그니처를 델리게이션합니다.
FOnTimelineEvent TimelineFinishedEvent;
UFUNCTION()
void TimelineFinishedFunction();
TimelineActor.cpp
로 이동하여 다음과 같은 코드를 구현합니다.
TimelineActor.cpp
void ATimelineActor::TimelineFinishedFunction()
{
UE_LOG(LogTemp, Warning, TEXT("Finished Event Called."));
}
ATimelineActor::BeginPlay()
메서드로 이동하여 다음과 같은 코드를 구현합니다.
TimelineActor.cpp
// 게임 시작 시 또는 스폰 시 호출
void ATimelineActor::BeginPlay()
{
Super::BeginPlay();
TimelineFinishedEvent.BindUFunction(this, FName("TimelineFinishedFunction"));
ExampleTimelineComp->SetTimelineFinishedFunc(TimelineFinishedEvent);
ExampleTimelineComp->PlayFromStart();
}
TimelineFinished
이벤트가 커스텀 TimelineFinished
함수에 성공적으로 바인딩되었습니다.
-
코드를 컴파일합니다. 에디터 를 닫고 콘텐츠 브라우저 로 이동합니다. BP_TimelineActor 를 찾아 레벨 로 드래그합니다.
-
플레이(Play) 버튼을 누릅니다. 출력 로그(Output Log) 창에 다음과 같은 메시지가 나타납니다.
완료된 코드
TimelineActor.h
#pragma once
#include "Components/TimelineComponent.h"
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TimelineActor.generated.h"
UCLASS()
class CPPTIMELINE_API ATimelineActor : public AActor
{
GENERATED_BODY()
public:
// 이 액터 프로퍼티의 디폴트값 설정
ATimelineActor();
protected:
// 게임 시작 시 또는 스폰 시 호출
virtual void BeginPlay() override;
public:
// 모든 프레임에서 호출
virtual void Tick(float DeltaTime) override;
protected:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UTimelineComponent* ExampleTimelineComp;
protected:
//Finished 이벤트를 처리할 함수에 대한 시그니처를 델리게이션합니다.
FOnTimelineEvent TimelineFinishedEvent;
UFUNCTION()
void TimelineFinishedFunction();
};
TimelineActor.cpp
#include "TimelineActor.h"
// 디폴트 값 설정
ATimelineActor::ATimelineActor()
{
// 이 액터가 프레임마다 틱()을 호출하도록 설정. 필요하지 않다면 퍼포먼스 향상을 위해 이 기능을 끌 수 있습니다.
PrimaryActorTick.bCanEverTick = true;
ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent"));
}
// 게임 시작 시 또는 스폰 시 호출
void ATimelineActor::BeginPlay()
{
Super::BeginPlay();
TimelineFinishedEvent.BindUFunction(this, FName("TimelineFinishedFunction"));
ExampleTimelineComp->SetTimelineFinishedFunc(TimelineFinishedEvent);
ExampleTimelineComp->PlayFromStart();
}
// 모든 프레임에서 호출
void ATimelineActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void ATimelineActor::TimelineFinishedFunction()
{
UE_LOG(LogTemp, Warning, TEXT("Finished Event Called."));
}