UE4 c++ 简要入门

1. c++ 与蓝图

  • C++实现Gameplay的构建模块,蓝图用这些模块实现有意思的Gameplay
  • 创建流程
    • 通过UE4内的类向导生成,避免自己直接去VS里创建
    • 指定适合的父类
  • UProperty(): 暴露变量给编辑器
    • EditAnywhere & VisibleAnywhere
      • EditAnywhere: 编辑器属性窗口可见,不可编辑
      • VisibleAnywhere: 编辑器属性窗口可见,可编辑
    • BlueprintReadOnly & BlueprintReadWrite
      • BlueprintReadOnly: 蓝图可读,不可修改
      • BlueprintReadWrite:蓝图可读,可修改
    • 其他的一些宏,定义在ObjectMacro.h的namespace UP中
  • UFUNCTION(): 公开方法给蓝图
    • BlueprintCallable:蓝图可调用
    • BlueprintImplementableEvent: 蓝图实现,c++调用(thunk)
    • BlueprintNativeEvent:类似上,不给c++可提供默认方法,用[func_name]_implementation实现
  • Reload机制,可不关闭虚幻编辑器,编译VS代码
  • 根据C++类,构建蓝图类,实现Gameplay
  • Gameplay的常用类
    • UObject, AActor, UActorComponent, UStruct
    • UObject:提供虚幻基础功能,一般不直接继承。如:
      • 反射属性和方法
      • 序列化,垃圾回收,按名称查找UObject
      • 联网,等等
    • AActor:派生自UObject
      • 基本对象,可添加UActorComponent
      • BeginPlay()
      • Tick()
      • EndPlay():对象销毁时调用
    • UStruct
      • 添加USTRUCT()标记
      • 传统数据类型,自己需要管理生命周期
  • 反射机制
    • Reflection is the ability of a program to examine itself at runtime
    • 可选,需要自己设置对应标签
      • UCLASS: 类必须派生自UObject,为该类生成反射数据
      • USTRUCT:为结构体生成反射数据
      • GNERATED_BODY: 替换为该类的样板代码
      • UPROPERTY, UFUNCTION:上面已经介绍过了
  • Actor迭代器
// 查找所有当前UObject实例
for (TObjectIterator<UObject> It; It; ++It)
{
   
   
    UObject* CurrentObject = *It;
    UE_LOG(LogTemp, Log, TEXT("Found UObject named:%s"), *CurrentObject->GetName());
}
APlayerController* MyPC = GetMyPlayerControllerFromSomewhere();
UWorld* World = MyPC->GetWorld();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值