UE4 C++最基础的API

RPC

记住两句话:

  • 不考虑组播,只有是自主的Actor才能进行网络复制,并且只能在自主的和权威的Actor上执行

  • 组播只能从服务器到客户端,可以是普通的Actor

属性复制

  • 对于属性复制,最重要的,就是别忘记在GetLifetimeReplicatedProps函数中添加如下:
  • void MyActor::GetLifetimeReplicatedProps(TArray<FLiftimeProperty>& OutLifetimeProps) const
    {
    	Super::GetLifetimeReplicatedProps(OutLifetimeProps);
    	DOREPLIFETIME(MyActor, mMyProp);
    }
    
  • 可以带条件拷贝DOREPLIFETIME_CONDITION,第三个参数可以带COND_InitialOnly、COND_AutonomousOnly、COND_OwnerOnly、COND_SimulatedOnly等参数

事件分发器

1. 创建

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam

DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams

DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams

注意

  1. 需要在类的外部声明
  2. 类型必须要以F开头
  3. 参数传入的格式是:事件类型,参数1类型,参数1名称,参数2类型,参数2名称……
  4. 属性需要使用UPROPERTY(BlueprintAssignable)修饰
  5. 如果希望函数可以在蓝图中被调用,还必须要加上BlueprintCallable修饰

2. 绑定

使用AddDynamic(obj, FuncPoint)绑定某个对象的某个函数

注意

  1. 绑定的函数必须是被UFUNCTION修饰的函数

蓝图函数库

UCLASS()
class UXXX : public UBlueprintFunctionLibrary
{
    GENERATED_BODY()
public:
    UFUNCTION(BlueprintCallable)
    static xxx func();
    UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject"))
    static xxx func2(UObject* WorldContextObject);
}

枚举

UENUM(BlueprintType)
enum class EXXX : uint8
{
    EAAA    UMETA(DisplayName = "AAA")
}

结构体

USTRUCT(BlueprintType)
struct FXXX
{
	GENERATED_USTRUCT_BODY()
}

使用自定义Log

头文件

DECLARE_LOG_CATEGORY_EXTERN(XXXLog, Log, All);

源文件

DEFINE_LOG_CATEGORY(XXXLog);

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值