实例甜点 Unreal Engine 4迷你教程(5)之函数中的静态变量

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

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

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

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

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

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

▼代码开始

// Called every frame
void 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)中依然保留值!

—— 小江村儿的文杰 [email protected] 2017年8月7日21:39:09

时间: 2024-10-20 11:00:28

实例甜点 Unreal Engine 4迷你教程(5)之函数中的静态变量的相关文章

实例甜点 Unreal Engine 4迷你教程(2)之用C++改变Image小部件的颜色

完成本迷你教程之前,请前往完成以下迷你教程: ·实例甜点 Unreal Engine 4迷你教程之如何用C++将纹理绘制在UserWidget的Image小部件上: 目标:实现UMG中的此功能: 在上一次的迷你教程的LearnWidgets工程上进行(如果你不亲自动手做的话,只关注标有"重要"的部分即可粗略知道要点). 第1步:在WidgetMng.h中加入此函数 UFUNCTION() void LearnImage(); 实现是: void AWidgetMng::LearnIma

Unreal Engine 4 系列教程 Part 1:入门

.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > .katex-html { display: block; } .katex-display > .katex > .katex-html > .tag { position: absolute; right: 0px; } .katex { font: 1.21em/1.2 KaTeX_M

Unreal Engine 4 优化教程

本教程旨在帮助开发人员提升基于虚幻引擎(Unreal Engine*4 (UE4))开发的游戏性能.在教程中,我们对引擎内部及外部使用的一系列工具,以及面向编辑器的最佳实践加以概述,还提供了有助于提高帧速率和项目稳定性的脚本.查看详情 原文地址:https://www.cnblogs.com/IDZPRC/p/10876294.html

Java中的静态变量、实例变量和局部变量及其特征

变量类型 说明 特征 类变量(静态变量) 独立于方法之外的变量,用   static 修饰 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外.     无论一个类创建了多少个对象,类只拥有类变量的一份拷贝.     静态变量除了被声明为常量外很少使用.常量是指声明为public/private,final和static类型的变量.常量初始化后不可改变.     静态变量储存在静态存储区.经常被声明为常量,很少单独使用static声明变量.     静态变量在

【REACT NATIVE 系列教程之三】函数绑定与FLEXBOX是用好REACT的基础

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2222.html Himi在写React 时主要遇到两个知识点觉得很有必要跟大家一起回顾下. 函数绑定 FlexBox 布局 一:函数绑定 首先来看一段代码片段: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 constructor(props) { super(props

JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量

转载请注明出处:http://blog.csdn.net/xyang81/article/details/42836783 在上一章中我们学习到了如何在本地代码中访问任意Java类中的静态方法和实例方法,本章我们也通过一个示例来学习Java中的实例变量和静态变量,在本地代码中如何来访问和修改.静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过[类名.变量名]来访问.实例变量也称为成员变量(属性),每个实例都拥有一份实例变量数据的拷贝,它们之间修改后的数据互不影响.下面看一

java 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块

①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 另一种没有static修饰,为成员变量 ②通俗点说: 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享.静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期. 而实例变量取决于类的实例.每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期. 注意点: 1.JAVA中初始化

静态变量和实例变量差别

JAVA类的成员变量有两种: 1.静态变量.被static修饰的变量,也叫类变量. 2.实例变量.没有static修饰的变量. 差别: 静态变量是共享的,在整个JVM中仅仅存在一个, 而成员变量是每个实例所独有的.供实例自己使用. 样例: 一个学生类:年龄.姓名,性别是实例变量.由于每一个人的年龄,姓名都可能不同. 而学费能够是类变量,每一个学生的学费基本都是一样的.(特殊的除外) 应用场景: 当一个对象是这个类全部实例所共享的时候,用类变量 假设每一个实例的值都可能不同.用实例变量. 静态变量

Java静态变量&实例变量&静态方法

首先语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加. 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量.静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了.总之,实例变量必须创建对象后才可以通过这个对象来使用 1 package staticVar; 2 3 public class svar { 4