void UObject::Serialize(FArchive& Ar) { UObject::Serialize(FStructuredArchiveFromArchive(Ar).GetSlot().EnterRecord()); } 其实就是从FArchive中取出Record,然后把它当做参数传给另一个版本的UObject::Serialize()。另一个版本又长这样: virtual void Serialize(FStructuredArchive::FRecord Record); 所以这...
接下来给Widget添加一条Transform的Track FKeyPropertyResultAddKeysToHandle(UObject*Object,FGuidObjectHandle,FFrameNumberKeyTime,ESequencerKeyModeKeyMode,TSubclassOf<UMovieSceneTrack>TrackClass,FNamePropertyName,TFunction<void(TrackType*)>OnInitializeNewTrack,constGenerateKeysCallback&OnGenerateKeys){//创建Trac...
int32 RunningSerialNumber; TArray<FAsyncLoadEvent> EventQueue; FAsyncLoadEventQueue() : RunningSerialNumber(0) { } FORCEINLINE void AddAsyncEvent(int32 UserPriority, int32 PackageSerialNumber, int32 EventSystemPriority, TFunction<void(FAsyncLoadEventArgs& Args)>&& Payload) { //FScopeLock Lock(&Asyn...
void Shutdown(EToolShutdownType ShutdownType); void Render(IToolsContextRenderAPI* RenderAPI); void OnTick(float DeltaTime); bool HasAccept(); bool CanAccept(); }; UInteractiveTool 不是一个独立的对象,你不能简单地自己生成一个。为了使其发挥作用,必须调用 Setup/Render/Tick/Shutdown,并传递诸如...
void AActor::GetLifetimeReplicatedProps( TArray< FLifetimeProperty > & OutLifetimeProps ) const { DOREPLIFETIME_CONDITION( AActor, ReplicatedMovement, COND_SimulatedOnly ); } 上面的代码表示我们只在模拟客户端进行ReplicatedMovement属性的同步。当然,具体的同步控制条件还有很多。
Status = CreateLoader(TFunction<void()>([]() {})); // ... Status = SerializePackageFileSummary(); // ... Status = SerializeNameMap(); 可以看到,Tick其实就是在一点点加载uasset的内容进来。具体内容同学们可以自己摸索,主要就是把上面贴的那个图里面的每个部分都读取到Linker中。
Status = CreateLoader(TFunction<void()>([]() {})); // ... Status = SerializePackageFileSummary(); // ... Status = SerializeNameMap(); 可以看到,Tick其实就是在一点点加载uasset的内容进来。具体内容同学们可以自己摸索,主要就是把上面贴的那个图里面的每个部分都读取到Linker中。
其实就是从 FArchive 中取出Record,然后把它当做参数传给另一个版本的 UObject::Serialize() 。另一个版本又长这样: virtual void Serialize(FStructuredArchive::FRecord Record); 所以这个第二个版本才是真正的主角。 再展开讲,就会比较大篇幅,所以先止步于此,后面会再提到它。
virtual void EditMesh(TFunctionRef<void(FDynamicMesh3&)> EditFunc); 基本上,你调用此函数并传入一个C++ Lambda表达式来执行你实际的网格编辑操作。这种模式使我们能够更好地控制对原始网格的访问,因此理论上使得我们可以从其他地方“借用”它。另一个函数::GetMeshCopy()允许你从 Actor中取得原始网格的副本,例如...
classCORE_APIFRunnable{public:virtualboolInit()virtualuint32Run()=0;virtualvoidStop(){}virtualvoidExit(){}virtualclassFSingleThreadRunnable*GetSingleThreadInterface()virtual~FRunnable(){}}; Init:负责初始化逻辑。它在调用Run函数之前被线程执行。如果初始化成功,则应返回true,否则返回false。如果返回false,线...