命名规则
添加前缀以区别类型:
F:纯C++类;
U:继承自UObject但不继承自Actor;
A:继承自Actor;
S:Slate控件相关类;
H:HitResult相关类;
实例化对象
纯C++类(F开头),使用new产生对象;
继承自UObject但不继承自Actor,使用NewObject函数产生对象:NewObject<T>();返回对象的指针;
继承自Actor使用SpawnActor函数产生对象:GetWorld()->SpwanActor<CusActorClass>();
获取场景中某个Actor的所有实例:使用迭代器:
for(TActorIterator<AActorClass> Iterator(GetWorld());Iterator;++Iterator)
{
//codes for something
*Iterator;//对象的指针
Iterator->Function();//调用函数
}
销毁对象
纯C++类
没有使用new:系统自动回收;
使用了new:手动delete或者声明时使用智能指针依靠引用计数销毁:
TSharedPtr<CusClass> CusClassPtr=MakeShareable(new CusClass());//将不同的new转化为智能指针进行管理
UObject类
根据UPROPERTY宏参与垃圾回收,受系统控制;
Actor类
可以调用Destory函数将对象从场景世界销毁,但内存的回收还是受系统控制;
C++到蓝图
UPROPERTY宏:注册变量到蓝图;
UPROPERTY(BlueprintReadWrite,VisiableAnywhere,Category=”Object”)
UFUNCTION宏:注册函数到蓝图;
UFUNCTION(BlueprintCallable,Category=”test”)