虚幻枚举的使用

1. 原生枚举(Native Enums)

定义方法: 原生枚举是 C++ 中的基本枚举,不包含虚幻引擎的反射信息。它们仅在 C++ 代码中可用,不会自动暴露给蓝图。

#pragma once

#include "CoreMinimal.h"

enum class ENativeEnum : uint8
{
    FirstValue,
    SecondValue,
    ThirdValue
};

 2. 反射枚举(Reflected Enums)

定义方法: 反射枚举通过虚幻引擎的 UENUM 宏定义,支持蓝图中的使用和编辑。它们允许在编辑器中进行更强大的集成和自定义。

#pragma once

#include "CoreMinimal.h"
#include "ReflectedEnum.generated.h"

UENUM(BlueprintType) // 使枚举在蓝图中可用
enum class EReflectedEnum : uint8
{
    ValueOne UMETA(DisplayName = "Value One"),
    ValueTwo UMETA(DisplayName = "Value Two"),
    ValueThree UMETA(DisplayName = "Value Three")
};

UENUM宏搭配BlueprintType可以将枚举暴露给蓝图 

UENUM
UENUM将枚举类型进行标记,方便UHT为其生成相应的类型文件,生成反射系统需要的代码。BlueprintType说明符令该枚举可以在蓝图中自如使用。

UMETA
使用UMETA宏来指定每个枚举值指定一个显示名,即在蓝图使用中和UI中显示的名称。

TEnumAsByte
虚幻引擎还提供了一种特殊类型的枚举,称为TEnumAsByte,用于加强类型安全并且解决一些常见的错误,主要是一些将枚举类型强行用作其基础类型的应用场合,例如意外使用枚举作为数组的索引。

枚举的基础类型

  1. uint8: 默认和最常用的基础类型,范围从 0 到 255。

    // MyEnum_Uint8.h
    #pragma once
    
    #include "CoreMinimal.h"
    #include "MyEnum_Uint8.generated.h"
    
    UENUM(BlueprintType)
    enum class EMyEnum_Uint8 : uint8
    {
        OptionA UMETA(DisplayName = "Option A"),
        OptionB UMETA(DisplayName = "Option B"),
        OptionC UMETA(DisplayName = "Option C")
    };

  2. int32: 适用于需要更大范围的枚举,范围从 -2,147,483,648 到 2,147,483,647。

    // MyEnum_Int32.h
    #pragma once
    
    #include "CoreMinimal.h"
    #include "MyEnum_Int32.generated.h"
    
    UENUM(BlueprintType)
    enum class EMyEnum_Int32 : int32
    {
        ValueOne UMETA(DisplayName = "Value One"),
        ValueTwo UMETA(DisplayName = "Value Two"),
        ValueThree UMETA(DisplayName = "Value Three")
    };

  3. uint32: 无符号整型基础类型,范围从 0 到 4,294,967,295。

    // MyEnum_Uint32.h
    #pragma once
    
    #include "CoreMinimal.h"
    #include "MyEnum_Uint32.generated.h"
    
    UENUM(BlueprintType)
    enum class EMyEnum_Uint32 : uint32
    {
        Alpha UMETA(DisplayName = "Alpha"),
        Beta UMETA(DisplayName = "Beta"),
        Gamma UMETA(DisplayName = "Gamma")
    };

  4. int64: 用于需要更大范围的整数,范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

  5. uint64: 无符号的 64 位整数,范围从 0 到 18,446,744,073,709,551,615。

    // MyEnum_Int64.h
    #pragma once
    
    #include "CoreMinimal.h"
    #include "MyEnum_Int64.generated.h"
    
    UENUM(BlueprintType)
    enum class EMyEnum_Int64 : int64
    {
        HighValue UMETA(DisplayName = "High Value"),
        LowValue UMETA(DisplayName = "Low Value")
    };

一些常见的数据类型

int8_t  typedef signed char;
 uint8_t  typedef unsigned char;
 int16_ttypedef signed short ;
uint16_ttypedef unsigned short ;
int32_ttypedef signed int;
uint32_ttypedef unsigned int;
int64_ttypedef signed  long long;
 uint64_ttypedef unsigned long long;


 

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
虚幻引擎是一款广泛应用于游戏开发的引擎,其中称为“bs”的部署方式指的是通过将游戏部署到Web浏览器上进行运行。虚幻引擎使用bs部署有以下几个优势。 首先,通过使用bs部署,虚幻引擎可以将游戏直接嵌入到Web页面中,用户只需要在浏览器上访问相关链接即可享受游戏体验,无需下载和安装额外的客户端程序。这种部署方式能够大大降低用户的门槛,提高游戏的可访问性和传播性。 其次,虚幻引擎的bs部署方式可以实现跨平台的游戏体验。由于Web浏览器的普及和跨平台的特性,通过bs部署可以使游戏在不同操作系统和设备上均能顺利运行。这意味着游戏开发者只需要开发一份兼容Web平台的游戏版本,就能够覆盖更广泛的用户群体。 另外,虚幻引擎的bs部署方式还可以与Web的其他技术相结合,实现更多的功能和交互性。通过使用HTML5、CSS和JavaScript等前端技术,可以为游戏添加丰富的用户界面、特效和多媒体元素。同时,利用Web的网络能力,还可以实现多人在线游戏、社交互动和数据存储等功能,为用户提供更全面的游戏体验。 总的来说,虚幻引擎使用bs部署能够在Web浏览器上实现游戏的运行和访问,提高游戏的可访问性和传播性,并且实现跨平台、多功能的游戏体验。这为游戏开发者带来更多的商业机会和创新空间,也为用户带来更方便、丰富的游戏体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值