UE4C++游戏开发入门教程!(第二期)1
UE4C++游戏开发入门教程!(第二期)2
UE4C++游戏开发入门教程!(第二期)3
UE4C++游戏开发入门教程!(第二期)4
创建c++类并以此创建蓝图类
先创建c++类MyActor_CPP
,再创建蓝图类MyActor_CPP_BP
,该蓝图父类选择MyActor_CPP
c++与蓝图共享变量
在c++的头文件.h
中声明变量,利用UPROPERTY
宏在引擎界面里标记上显示、可用或禁用等,详细参数参考《Unreal属性宏UPROPERTY的参数》
public:
//将下面所有的变量等公开到ue引擎中
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "PropertyTest1")
float A;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "PropertyTest1")
float B;
//VisibleAnywhere仅在显示区显示,但没有禁止蓝图中事件图表内的修改
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "PropertyTest2")
float C;
//BlueprintReadOnly只读,但没有禁止显示区的数值修改
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "PropertyTest2")
float D;
//全面禁止修改
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "PropertyTest2")
float E;
看一下变量及分类是否已经能看到了
C++与蓝图共享方法
c++头文件.h
的类中,使用UFUNCTION
宏声明函数InputText
,详细参数参考《UE4入门-常见的宏-UFUNCTION》
public:
//声明一个函数并用宏确定是否允许在蓝图中操作
UFUNCTION(BlueprintCallable)
void InputText(int32 num);
c++ .cpp
的中定义函数
// 定义函数打印,-1表示不覆盖,即多行,其它数字表示只显示一行,5表示显示5秒
void AMyActor::InputText(int32 num)
{
//GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Blue, TEXT("中文能否正常显示"));
//GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, TEXT("chinese can not show normal"));
GEngine->AddOnScreenDebugMessage(-1, 5, FColor::White, FString::FromInt(num));
}
打开蓝图类,事件编辑器里找到函数,调用执行
效果如图
如果在.cpp
的BeginPlay
或Tick
方法里执行该函数,并将该类拖入引擎的场景中,那么游戏运行开始就会打印一次或多次,而不用到蓝图里写流程
void AMyActor::BeginPlay()
{
Super::BeginPlay();
//执行函数打印
InputText();
}
注意点
有些人在蓝图中看不到c++共享的变量,可能是眼睛这个位置没有打勾。