深入研究虚幻4反射系统实现原理(三) – 风恋残雪

0

前两篇文字是在虚幻引擎中引入的。,提议你看注意,或许你可能性不包含我在说什么。,不管怎样相当多的坏了。,这执意通讯。 添加到运转时,到末尾,因此落山将近应验了。,以下为笔迹。

通讯表达

虚幻引擎运用一落山静态变量来流露行使职责。,本文和咱们先前讲过的。鉴于开发的C 法典的善良,我在后头的文字中也说过了。。我把它放在喂。

本人使知晓唱片存储器与开发的C 公司最大的效益,它可以包管与二元系同时存在的。。您老是无能力的整枝旧的或老一套的反照唱片。,鉴于它是用其余的法典汇编引擎的。,它运用C 声调计算构件距离顺序的时辰我,而过失在特任平台上举行倒转工程。体温过高杀菌是触发本人孤独的顺序,不运用任何一个开发头FI,因而它也制止了鸡蛋。、鸡蛋的成绩,这在虚幻的3本子汇编器中受到了批判。。

UCLASS

类的反照帮忙,虚幻4分为两步来做的。

  1. IMPLEMENT_CLASS() 因此宏是用来在顺序启动表达这类,包罗对UCLASS类和C的流露代。
  2. static FCompiledInDefer 成立静态变量,用于向DeferredCompiledInRegistration因此静态装饰中添加流露行使职责,设定初值默许反照属性。包罗效能、构件变量、元唱片等。

USTRUCT

对布置的帮忙,虚幻4引擎亦分为两步来做的。

  1. static FCompiledInDeferStruct 存储器用于结构布置的隐士行使职责,用于顺序启动时援引,准教授职位可以本身参观法典并包含进程。。
  2. 还成立静态宾语,因此宾语在构成行使职责中会援引UScriptStruct::DeferCppStructOps,它是用来在这deferredcppstructops转 map 流露静态凑合着活下去布置、解构的一类。

UENUM

列举是复杂的,正是一步。

  1. static FCompiledInDeferEnum 成立静态变量,在创作本人列举反照宾语单一的形势下,效能。

起点进程辨析

咱们解说了表达通讯的处置进程。,它们的演技与介绍模块的任务量同时存在的。,咱们都包含静态变量的设定初值优于是。喂咱们复杂地折叠虚幻编辑软件的开端流。,这么样,咱们就可以参观专门流露通讯的全进程。。

image

你可以参观空虚的 ProcessNewlyLoadedUObjects()因此行使职责执意咱们次要关怀的行使职责,咱们后头提到的流露通讯,包罗类、布置和列举典型的反照通讯将为,其法典如次所示:

void ProcessNewlyLoadedUObjects()
{
    DECLARE_SCOPE_CYCLE_COUNTER(TEXT("ProcessNewlyLoadedUObjects"), STAT_ProcessNewlyLoadedUObjects, STATGROUP_ObjectVerbose);

#if WITH_HOT_RELOAD
    UClassGenerateCDODuplicatesForHotReload();
#endif
    UClassRegisterAllCompiledInClasses();

    while( AnyNewlyLoadedUObjects() )
    {
        UObjectProcessRegistrants();
        UObjectLoadAllCompiledInStructs();
        UObjectLoadAllCompiledInDefaultProperties();        
    }
#if WITH_HOT_RELOAD
    UClassReplaceHotReloadClasses();
#endif
}

下面咱们对下面的法典做本人复杂的解说。,准教授职位还可以检查法典来包含它是什么成真的。。

  1. 法典中WITH_HOT_RELOAD因此宏是用来处置C++法典热整枝运用的。
  2. UClassRegisterAllCompiledInClasses()用来流露全部的要整枝的类,喂面的全部的类执意经过后头IMPLEMENT_CLASS()宏添加进入的。
  3. UObjectProcessRegistrants()用于处置自发的流露的宾语,并将它们添加到objectarray,为不久以后的检索。
  4. UObjectLoadAllCompiledInStructs()用于流露布置体和列举的反照通讯。装饰外面的装饰是经过FCompiledInDeferStruct和FCompiledInDeferEnum成立的静态宾语流露上的。
  5. UObjectLoadAllCompiledInDefaultProperties()用于流露类的反照通讯而且成立本人默许宾语(CDO)。

总结

到此因此,因此落山的3篇文字经过代表示例的办法向准教授职位显露出了虚幻中反照体系的成真办法,规律很复杂。,在因特网上也相当办法用C帮忙反照类。,里面的本人虚幻的成真执意里面的经过。,鉴于UHT的帮忙,全都是暗淡的任务。、咱们不用做苦活。,拿 … 来说,最乏味的的办法,是咱们成真咱们的少量的宏R,但能力依然很低。。而相当多的成真办法会从汇编器发生的调试通讯起因于,拿 … 来说,经过与PDB寄给报社,或铿锵开发寄给报社,如此云云。,它也可以做,不管怎样最大的成绩经过是跨平台的帮忙过失特别的。。因而虚幻4中这一套UHT器一般地说来说静止的很不错的,设想后头有时期的话,我愿望给你的UHT器辨析。对了,设想你有什么想对虚幻4引擎比力想包含的,也欢送在下面的评论,我会把你想先做辨析模块。接下来,我可能性把眼放在妄想蓝图的规律和详细的I上。。敬请期待!

LEAVE A REPLY