关于节拍同步委托
您可以与添加到Cue的节拍同步信息的节拍速度匹配来调用任意已注册函数。
在委托中可以注册多个函数。
关于序列回调委托
您可以在添加到Cue中的序列回调标记的时机来调用任何已注册的函数。
在委托中可以注册多个函数。
在Cue中添加节拍同步信息
在Atom Craft准备添加了节拍同步信息的Cue。
- 关于节拍同步的详细信息,请参照 https://game.criware.jp/manual/adx2_tool/latest/criatom_tools_atomcraft_beatsync.html 。
在Cue中添加序列回调标记
在AtomCraft准备添加了序列回调标记的Cue。
- 关于序列的详细信息,请参照 https://game.criware.jp/manual/adx2_tool/latest/criatom_tools_atomcraft_sequence_marker.html 。
如何在蓝图中注册
您可以从AtomComponent调用每个委托。
也可以通过将任意的自定义事件绑定到每个委托来调用回调时的处理。
如何在C++代码中注册
MyActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "AtomComponent.h"
#include "MyActor.generated.h"
UCLASS()
class SO_PROJECTED_API AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyActor();
protected:
virtual void BeginPlay() override;
virtual void BeginDestroy() override;
private:
UFUNCTION(BlueprintCallable, Category = "MyActor")
void OnBeatSyncCallback(UAtomComponent* Atom, const FAtomBeatSyncInfo& Info);
UFUNCTION(BlueprintCallable, Category = "MyActor")
void OnSequenceCallback(UAtomComponent* Atom, const FAtomSequenceInfo& Info);
private:
UAtomComponent* AtomComponent{ nullptr };
};
MyActor.cpp
#include "MyActor.h"
AMyActor::AMyActor()
{
PrimaryActorTick.bCanEverTick = false;
PrimaryActorTick.bStartWithTickEnabled = false;
AtomComponent = NewObject<UAtomComponent>();
AtomComponent->AddToRoot();
}
void AMyActor::BeginPlay()
{
Super::BeginPlay();
AtomComponent->OnAtomBeatSyncCallback(this, &AMyActor::OnBeatSyncCallback);
AtomComponent->OnAtomSequenceCallback(this, &AMyActor::OnSequenceCallback);
}
void MyActor::BeginDestroy()
{
if(IsValid(AtomComponent) == true){
AtomComponent->RemoveFromRoot();
AtomComponent = nullptr;
}
}
void AMyActor::OnBeatSyncCallback(UAtomComponent* Atom, const FAtomBeatSyncInfo& Info)
{
UE_LOG(LogTemp, Log, TEXT("Called AtomBeatSync Callback!"));
}
void AMyActor::OnSequenceCallback(UAtomComponent* Atom, const FAtomSequenceInfo& Info)
{
UE_LOG(LogTemp, Log, TEXT("Called AtomSequence Callback!"));
}
- 注意
- 请将UAtomComponent的指针和每个回调信息的结构体作为要注册函数的参数。
从实际的调用时间开始会有延迟,以实现线程安全。
请注意,由于委托是在主线程中执行,因此操作帧速率会受到影响。
-