UE4 --再次学习笔记(暂时封存)跑去学c++11、14、17 了
1.前缀表达(NewObject<>() , AClass::FuncName )
和反射相关
U
从所有游戏性对象的基础类进行延伸。
它们无法被实例到世界场景中,必须从属于 Actor。
总体而言,它们是与 组件 相似的对象。
A
从 可生成的 游戏性对象的基础类进行延伸。
它们是 Actor,可直接生成到世界场景中。
E 枚举
b 布尔
F 其他项(或者叫杂项)委托、FVector FRotator 都是这里面的
2. 类头文件是标准c++
3. UCLASS 修饰符
UCLASS()
Abstract 抽象基类 不能被实例化
Blueprintable 可蓝图化
BlueprintType 可用于在蓝图中指定改类
UPROPERTY()
VisibleAnywhere
EditAnywhere
BlueprintReadWrite
BlueprintReadOnly
UFUNCTION()
BlueprintCallable c++ 中写 蓝图调用
BlueprintImplementableEvent 蓝图中实现 c++ 调用
BlueprintNativeEvent 在c++ 中默认实现
后面加入 _Implementation 如果在蓝图中有实现,则c++中的实现被覆盖
BlueprintPure 纯函数,没有执行线 一般只用于数值计算返回值
Delegate
单波委托:
DECLARE_DELEGATE_OneParam(DelgateName,OneParam) 一个参数无返回值类型的委托
bind:
BindUFunction
BindUObject
BindStatic
注意 bind 的时候的第一个参数 InUserObject 和FunName 填的是那个类的那个函数
一般InUserObject 是 NewObject<>(this) ; 里面要填this 不然生成不了对象
BindUFunction 这个 如果调用的UObject 的函数 则 NewObject<>() 就可以
如果调用的是Actor 之上(character、pawn)的函数 则需要NewObject<>(this)
BindUObject 这个 NewObject<>() 这样就可以
番外:Lambda表达式
语法:[捕获列表][mutable](函数参数)[->return type]{函数体}
[捕获列表]
= : 以值传递的方式
& :以引用传递
也可以单独说明捕获变量的名字
this 这个类了的成员变量
默认是不能修改的,除非在()后加上muttable
() 参数 --- 类似于函数参数
多播委托: