本小节的教程无前置教程,可直接学习,篇幅很短。

本教程浓缩起来就是一句话:函数中的静态变量在调试过程中保留值。所以需要谨慎对待。

什么意思?请先不要一步一步对着做,而整体地看一遍下面的过程:

第一步:创建一个空工程(C++ Basic Code),名为LearnArray;

第二步:创建两个Actor类分别称为:MyActor和sand;

第三步:在MyActor中有tick函数如下:

▼代码开始// Called every framevoid AMyActor::Tick(float DeltaTime){    Super::Tick(DeltaTime);    static int32 Timer = 0;//【请注意这里声明了函数级别的静态变量】    if (Timer++ == 20)    {        UE_LOG(LogTemp, Warning, TEXT("%s"), *FString("[log by wenjie] Time==20"));/*【这一段注掉的代码请无视】        for (auto i : arr)        { arr.Remove(i); UE_LOG(LogTemp, Warning, TEXT("%s"), *FString("[log by wenjie] removed one instance"));        }*/    }    UE_LOG(LogTemp, Warning, TEXT("%s %d"), *FString("[log by wenjie] "), Timer);//【请注意这里有打印】}代码结束

第四步:执行之后观察打印:

第一遍打印到413,第二遍运行时,将会从414开始打印!

总结:函数中的静态变量在调试过程(PIE)中依然保留值!

—— 小江村儿的文杰 zouwj5@qq.com2017年8月7日21:39:09

(下载iPhone或Android应用“经理人分享”,一个只为职业精英人群提供优质知识服务的分享平台。不做单纯的资讯推送,致力于成为你的私人智库。)