美文网首页
unreal C++初步介绍

unreal C++初步介绍

作者: Lee_5566 | 来源:发表于2021-06-10 14:35 被阅读0次
image.png

unreal C++

UE4提供了两种创建新Gameplay元素的方法:C++和蓝图视觉脚本。

程序员利用C++即可添加基础Gameplay系统,然后设计师可基于这些系统进行构建或利用这些系统为某个特定关卡或游戏本身创建自定义Gameplay。

在这些情况下,C++程序员在文本编辑器(如Notepad++)或IDE(通常是Microsoft Visual Studio或Apple Xcode)中工作,设计师则在UE4的蓝图编辑器中工作。

C++实例:

#include "GameFramework/Actor.h"
#include "MyActor.generated.h"

UCLASS()
class AMyActor : public AActor
{
    GENERATED_BODY()

public:
    // 设置该Actor属性的默认值
    AMyActor();

    // 每一帧都调用
    virtual void Tick( float DeltaSeconds ) override;

protected:
    // 游戏开始或产生时调用
    virtual void BeginPlay() override;
};

C++类提供 BeginPlay 和 Tick 两个重载方法。

BeginPlay 事件告诉Actor以可运行状态进入了游戏。这是启动类Gameplay逻辑的好位置。

Tick 每帧调用一次,使用自上次调用传递以来经过的时间。可以在这里执行任何重复逻辑。

如果不需要该功能,最好将其移除,这样对性能有益。

如果将其移除,确保移除构造函数中指示应开始发生tick事件的相应行。下面的构造函数就包含所提及的行。

AMyActor::AMyActor()

{

    // 将该Actor设置为每帧调用一次Tick()。如果您没有这个需要,可以将其关闭来改善性能。

    PrimaryActorTick.bCanEverTick = true;

}

属性出现在编辑器中

创建类后,现在让我们创建一些设计师可以在虚幻编辑器中设置的属性。

将属性公开给编辑器非常简单,只需要使用说明符UPROPERTY即可实现。您只需在属性声明的上一行加入UPROPERTY(EditAnywhere)即可.

UCLASS()
class AMyActor : public AActor
{
    GENERATED_BODY()
public:

    UPROPERTY(EditAnywhere)
    int32 TotalDamage;

    ...
};

另外还可以添加分类:



UPROPERTY(EditAnywhere, Category="Damage")
int32 TotalDamage;

这样属性就被添加到Damage分类下面了。

当在C++类中创建完成后,就可以在编辑窗口中看到了,如下所示:

UCLASS()
class AMyActor : public AActor
{
    GENERATED_BODY()
public:

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
    int32 TotalDamage;

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
    float DamageTimeInSeconds;

    UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category="Damage")
    float DamagePerSecond;

    ...
};

编辑窗口中显示如图:

image.png

设置默认值

在构造函数中为属性设置默认值的方式与典型的C++类一样。

设置默认值的两种方式:

AMyActor::AMyActor()
{
    TotalDamage = 200;
    DamageTimeInSeconds = 1.0f;
}

AMyActor::AMyActor() :
    TotalDamage(200),
    DamageTimeInSeconds(1.0f)
{
}

编辑窗口中显示如图:


image.png

函数调用

如何在创建Gameplay系统期间,设计师将需要能够调用C++程序员创建的函数。而程序员也要能够从C++代码调用蓝图中实现的函数。

首先来让CalculateValues()能够从蓝图调用。

如下所示:

UFUNCTION(BlueprintCallable, Category="Damage")
void CalculateValues();
  • UFUNCTION() 宏
    负责处理将C++函数公开给反射系统。

  • BlueprintCallable
    将其公开给蓝图虚拟机。

  • Category
    每一个公开给蓝图的函数都需要一个与之关联的类别,这样右键点击快捷菜单的功能才能正确生效。

image.png

相关文章

  • unreal C++初步介绍

    unreal C++ UE4提供了两种创建新Gameplay元素的方法:C++和蓝图视觉脚本。 程序员利用C++即...

  • 无法在Unreal Engine中使用C++创建Struct

    1)无法在Unreal Engine中使用C++创建Struct 2)Unreal中,如何在一个视口内显示多个摄像...

  • ue4学习笔记

    Unreal Engine 4 Scripting with C++ Cookbook 简单笔记 主动删除Obj...

  • LOG&Itr&XML&String Conversions

    分类:UE4 C++ 标签:数据结构 数据处理 配置文件 log 参考网址:https://wiki.unreal...

  • Lighting视频

    Lighting with Unreal Engine Masterclass | Unreal Dev Day ...

  • C++学习笔记目录

    C++初步 C++数据长度 C/C++ 堆 栈 静态 常量 代码 区 static关键字 C++类和对象 C++引...

  • unreal删除C++类

    总是容易忘,步骤忒多,神烦 关闭visual studio关闭UE4编辑器删除项目中Soure文件夹中的你想删除的...

  • Unreal 如何编译C++

    1. C++编译 (1)C++编译后生成的文件 以下对生成文件的常见文件进行说明 (2.)C++编译过程 2. U...

  • Unreal虚幻4引擎计时器延迟方法

    Unreal(UE4)计时器Timer真的是一个深坑,初步体验了一下,写了个小总结,链接如下 https://ww...

  • matplotlib 初步介绍

    matplotlib官方文档 概念 figure The whole figure. The figure kee...

网友评论

      本文标题:unreal C++初步介绍

      本文链接:https://www.haomeiwen.com/subject/hvhheltx.html