首页 > 编程语言 >[7] UE C++

[7] UE C++

时间:2024-04-03 21:34:27浏览次数:15  
标签:int32 UPROPERTY EditAnywhere 蓝图 C++ UE class

Day3 

 制作引擎使用的属性

//制作引擎使用的属性
UPROPERTY()
class UPaperFlipbook* RedBird;
UPROPERTY(EditAnywhere,Category="SelfProprety|Number") //可读可写标记
int32 Number;//在细节面板中可以被编辑,同时也能被访问
UPROPERTY(VisibleAnywhere) //只读标记
int32 Age;//在细节面板中可以被访问,但是不能被编辑
UPROPERTY(BlueprintReadOnly)//蓝图可读,不能编辑
int32 Leg;
UPROPERTY(BlueprintReadWrite)//蓝图可读可写
bool IsToggle;
UPROPERTY(EditAnywhere,BlueprintReadOnly,Category="SelfProprety|Number") //在细节面板中可读可写, 在蓝图中只读
int32 Number2;
UPROPERTY(VisibleAnywhere,BlueprintReadWrite,Category="SelfProprety|Number|T") //组合标记
int32 Number3;
UPROPERTY(VisibleAnywhere,DisplayName="FirstNumber",Category="SelfProprety|Number") 
int32 Number4;

   
UPROPERTY(EditAnywhere)
bool bToggle; //限定当前属性的开关
UPROPERTY(EditDefaultsOnly,meta=(EditCondition="bToggle"))
int32 Number5;
UPROPERTY(EditAnywhere,meta=(UIMin=0,UIMax=3))//滑动限定值为0--3
int32 Number6;
            //滑动限定值为0--3 输入值的范围在-1--100之间
UPROPERTY(EditAnywhere,meta=(UIMin=0,UIMax=3,ClampMin=-1,ClampMax=10))
int32 Number7;
UPROPERTY(EditAnywhere,EditFixedSize)
TArray<int32> NumberArray;
UPROPERTY(EditAnywhere)
TArray<int32> NumberArray1;
   //Number8被隐藏在了高级项中
UPROPERTY(EditAnywhere,AdvancedDisplay)
int32 Number8; 

制作节点

//制作节点
/*
 * 本函数用于测试
 * N 数字
 * B 判断标记
 */	
UFUNCTION(BlueprintCallable)	
int32 TestFunc1(int32& N,bool& B,FString Name);

UFUNCTION(BlueprintCallable)	
int32 TestFunc2(const int32& N,bool& B,FString Name);

UFUNCTION(BlueprintCallable,BlueprintImplementableEvent)
void TestFunc3();//在C++中写声明,在蓝图中给出定义,但是C++和蓝图都可以调用这个函数


UFUNCTION(BlueprintCallable,BlueprintNativeEvent)
void TestFunc4();//在C++中写声明和定义,在蓝图中也可以给出定义,C++和蓝图都可以调用这个函数

C++加载蓝图为默认角色 

ConstructorHelpers::FClassFinder<AMyPawn> MyClassPath(TEXT("/Script/Engine.Blueprint'/Game/FlappyBird/Blueprint/BP_Pawn.BP_Pawn_C'"));
if(MyClassPath.Class)
{
    DefaultPawnClass=MyClassPath.Class;
}
//_C 重点

加载类为蓝图组件

C++类中作为成员变量使用

UPROPERTY(EditAnywhere)
class USpringArmComponent* ArmComponent;
UPROPERTY(EditAnywhere)
class UCameraComponent* MainCamera;

 C++建插槽 , 蓝图选择

UPROPERTY(EditAnywhere)
class UPaperFlipbookComponent* RenderBirdComponent;
UPROPERTY(EditAnywhere)
class UPaperFlipbook*  RedBirdFlipbook;
UPROPERTY(EditAnywhere)
class UPaperFlipbook*  YellowBirdFlipbook;
UPROPERTY(EditAnywhere)
class UPaperFlipbook*  BlueBirdFlipbook;

加载枚举

//枚举(用于描述状态信息)
UENUM()
enum EBirdStateTest //传统枚举
{
   EBS_Wait,//等待游戏开始状态的小鸟
   EBS_Fly,//游戏开始小鸟可以飞
   EBS_Dead,//游戏结束,小鸟标记为死亡状态
};
UENUM(BlueprintType)
enum EColor //传统枚举
{
   EC_Wait UMETA(DisplayName="Wait"),//等待游戏开始状态的小鸟
   EC_Fly  UMETA(DisplayName="Fly"),//游戏开始小鸟可以飞
   EC_Dead//游戏结束,小鸟标记为死亡状态
};
UENUM()
namespace  EBirdStateSecondTest //加命名空间的枚举,明明空间名是枚举名
{
   enum Type 
    {
      Wait,//等待游戏开始状态的小鸟
      Fly,//游戏开始小鸟可以飞
      Dead//游戏结束,小鸟标记为死亡状态
   };
}


UENUM()
enum class EBirdState:uint8 //C++11的枚举(UE中常见)
{
   Wait,//等待游戏开始状态的小鸟
   Fly,//游戏开始小鸟可以飞
   Dead//游戏结束,小鸟标记为死亡状态
};
USTRUCT(BlueprintType)
struct FUserInfo
{
   GENERATED_BODY()
   UPROPERTY(BlueprintReadWrite)
   FString Name;
   UPROPERTY(BlueprintReadWrite)
   int32 Age;
};


UCLASS() //NotBlueprintType在蓝图中禁止BirdPawn类被当作数据类型使用
         //NotBlueprintable在蓝图中禁止BirdPawn被当作蓝图父类使用
class FLAPPYBIRD_API ABirdPawn : public APawn
{   GENERATED_BODY()
public:
   UPROPERTY(BlueprintReadWrite)
   FUserInfo Info;

   //传统的枚举和加命名空间的枚举需要借助TEnumAsByte转为一个类类型加UPROPERTY
    UPROPERTY(EditAnywhere)
   TEnumAsByte<EColor> SetColor;
   UPROPERTY(EditAnywhere)
   TEnumAsByte<EBirdStateSecondTest::Type> SetBirdState1;

   //加限定符的C++11的枚举不需要转换,直接可以使用(加了关键字class,已经被处理为一个类了)
   UPROPERTY(EditAnywhere)
   EBirdState SetBirdState2;
 }

Day4

标签:int32,UPROPERTY,EditAnywhere,蓝图,C++,UE,class
From: https://www.cnblogs.com/Aquakinn/p/18113486

相关文章

  • 【c++基础】数池塘(四方向)
    说明农夫约翰的农场可以表示成N*M(1≤N、M≤100)个方格组成的矩形。由于近日的降雨,在约翰农场上的不同地方形成了池塘。每一个方格或者有积水('W')或者没有积水('.')。农夫约翰打算数出他的农场上共形成了多少池塘。一个池塘是一系列相连的有积水的方格,每一个方格周围的四个方格都被......
  • (C++)auto关键字(C++11)——<入门>
    类型别名思考:随着程序越来越复杂,程序中用到的类型也越来越复杂,经常体现在:1.类型难于拼写2.含义不明确导致容易出错#include<string>#include<map>intmain(){std::map<std::string,std::string>m{{"apple","苹果"},{"orange","橙子"......
  • (C++)内联函数——<入门>
    概念:以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用。 查看方式:1.在release模式......
  • 关于vue项目在使用vuex的时候,this.$store报错undefined的问题
    vue.runtime.esm.js?c320:4605[Vuewarn]:Errorinrender:"TypeError:Cannotreadpropertiesofundefined(reading'state')。这个问题的主要原因是vuex的版本高于vue的版本。如果vue使用2.XX,vuex的版本要低于4.XX."dependencies":{"axios":"^1.6......
  • C++ While 和 For 循环:流程控制全解析
    C++Switch语句使用switch语句选择要执行的多个代码块之一。语法switch(expression){casex://代码块break;casey://代码块break;default://代码块}它的工作原理如下:switch表达式被评估一次表达式的值与每个case的值进行比......
  • [6] UE C++ FlappyBird
    FlappyBird项目引入Paper2D插件//渲染资产的组件classUPaperSpriteComponent*RenderLandComponent;//资产classUPaperSprite*LandSprite;GameModeBase.h.cppUE枚举声明//枚举(用于描述状态信息)UENUM()enumEBirdStateTest//传统枚举{ EBS_Wait,//等待游戏开始......
  • C++中的虚函数和虚函数表
    在上面一篇博客中 https://www.cnblogs.com/wphl-27/p/18111083,提到了虚函数,纯虚函数这篇博客我想继续进一步来说一下虚函数和虚函数表在C++中,每一个含有虚函数的类,编译器都会为它啊做出一个虚函数表(通常叫做vtable),这个虚函数表里面的每个元素都是函数指针,每个元素(函数......
  • Java登陆第三十七天——VUE3插值表达式、文本渲染、属性渲染、事件绑定
    插值表达式VUE中最基本的数据绑定形式。语法格式如下:{{数据来源}}插值表达式的特点:不依靠标签。可以调用函数。支持运算符。栗子App.vue<scriptsetup>letmsg="字符串";letnum=10;functionf1(){return"有返回值的方法"}letf2=()=>{......
  • C++构建工具_bazel
    apollo工具1.DreamView可视化交互工具DreamView是一个web应用程序,提供如下的功能: 可视化显示当前自动驾驶车辆模块的输出信息。例如:规划路径、车辆定位、车架信息等。为使用者提供人机交互接口以监测车辆硬件状态,对模块进行开关操作,启动自动驾驶车辆等。提供......
  • 用c++实现百元买百鸡问题、顺序查找
    5.1.2百元买百鸡问题【问题】已加公鸡5元一只,母鸡3元一只,小鸡1元三只,用100元钱买100只鸡, 问公鸡、母鸡、小鸡各多少只?【想法】 设公鸡、母鸡和小鸡的个数分别为x、y、z,则有如下方程组成立,则百元买百鸡问题转换为求方程组的解。应用蛮力法求力程组的解只能依次试探变量x......