vault backup: 2024-10-12 17:19:45
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# NotReplicated
|
||||
|
||||
- **功能描述:** 跳过复制。这只会应用到服务请求函数中的结构体成员和参数。
|
||||
|
||||
- **元数据类型:** bool
|
||||
- **引擎模块:** Network
|
||||
- **限制类型:** Struct members
|
||||
- **作用机制:** 在PropertyFlags中加入[CPF_RepSkip](../../../Flags/EPropertyFlags/CPF_RepSkip.md)
|
||||
- **常用程度:** ★★★
|
||||
|
||||
只用在结构成员中,指定struct中的某个属性不复制,否则默认就都会复制。这个用于排除掉结构中的某属性。
|
||||
|
||||
## 示例代码:
|
||||
|
||||
```cpp
|
||||
USTRUCT(BlueprintType)
|
||||
struct FMyReplicatedStruct
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
FString MyString_Default;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite,NotReplicated)
|
||||
FString MyString_NotReplicated;
|
||||
};
|
||||
|
||||
UCLASS(Blueprintable, BlueprintType)
|
||||
class INSIDER_API AMyProperty_Network :public AActor
|
||||
{
|
||||
public:
|
||||
GENERATED_BODY()
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated)
|
||||
FMyReplicatedStruct MyStruct_Replicated;
|
||||
};
|
||||
```
|
||||
|
||||
其中MyStruct_Replicated会复制,但是其中的MyString_NotReplicated不会复制。
|
@@ -0,0 +1,5 @@
|
||||
# RepRetry
|
||||
|
||||
- **功能描述:** 只适用于结构体属性。如果此属性未能完全发送(举例而言:Object引用尚无法通过网络进行序列化),则重新尝试对其的复制。对简单引用而言,这是默认选择;但对结构体而言,这会产生带宽开销,并非优选项。因此在指定此标签之前其均为禁用状态。
|
||||
- **元数据类型:** bool
|
||||
- **引擎模块:** Network
|
@@ -0,0 +1,39 @@
|
||||
# Replicated
|
||||
|
||||
- **功能描述:** 指定该属性应随网络进行复制。
|
||||
|
||||
- **元数据类型:** bool
|
||||
- **引擎模块:** Network
|
||||
- **作用机制:** 在PropertyFlags中加入[CPF_Net](../../../Flags/EPropertyFlags/CPF_Net.md)
|
||||
- **常用程度:** ★★★★★
|
||||
|
||||
## 示例代码:
|
||||
|
||||
记得要在cpp代码中相应添加GetLifetimeReplicatedProps函数
|
||||
|
||||
```jsx
|
||||
UCLASS(Blueprintable, BlueprintType)
|
||||
class INSIDER_API AMyProperty_Network :public AActor
|
||||
{
|
||||
public:
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
int32 MyInt_Default = 123;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated)
|
||||
int32 MyInt_Replicated = 123;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated)
|
||||
FMyReplicatedStruct MyStruct_Replicated;
|
||||
};
|
||||
|
||||
void AMyProperty_Network::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
|
||||
{
|
||||
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||
DOREPLIFETIME(AMyProperty_Network, MyInt_Replicated);
|
||||
DOREPLIFETIME(AMyProperty_Network, MyStruct_Replicated);
|
||||
}
|
||||
```
|
||||
|
||||
示例效果就不发了,这个是基本的网络标记。
|
@@ -0,0 +1,35 @@
|
||||
# ReplicatedUsing
|
||||
|
||||
- **功能描述:** 指定一个通知回调函数,在属性通过网络更新后执行。
|
||||
- **元数据类型:** string="abc"
|
||||
- **引擎模块:** Network
|
||||
- **作用机制:** 在PropertyFlags中加入[CPF_Net](../../../../Flags/EPropertyFlags/CPF_Net.md), [CPF_RepNotify](../../../../Flags/EPropertyFlags/CPF_RepNotify.md)
|
||||
- **常用程度:** ★★★★★
|
||||
|
||||
ReplicatedUsing 可以接受无参数的函数,或是带一个参数的函数携带旧值。一般在OnRep函数里,做一些开启关闭的相应操作,比如enabled的复制就会触发相应的后续逻辑。
|
||||
|
||||
## 测试代码:
|
||||
|
||||
```jsx
|
||||
UCLASS(Blueprintable, BlueprintType)
|
||||
class INSIDER_API AMyProperty_Network :public AActor
|
||||
{
|
||||
public:
|
||||
GENERATED_BODY()
|
||||
protected:
|
||||
UFUNCTION()
|
||||
void OnRep_MyInt(int32 oldValue);
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, ReplicatedUsing = OnRep_MyInt)
|
||||
int32 MyInt_ReplicatedUsing = 123;
|
||||
};
|
||||
|
||||
void AMyProperty_Network::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
|
||||
{
|
||||
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||
DOREPLIFETIME(AMyProperty_Network, MyInt_ReplicatedUsing);
|
||||
}
|
||||
```
|
||||
|
||||
在蓝图中等价于RepNotify的作用。
|
||||
|
||||

|
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
Reference in New Issue
Block a user