UE4學習筆記 Replication

2021-07-14 21:37:36 字數 2277 閱讀 9603

actors

客戶端複製actor被spawn出來時, 只有location和rotation在prebeginplay()和postbeginplay()時是合法的

被複製的actor只有在伺服器關閉他們的複製通道時才被銷毀

actor的屬性複製是可靠的. 只會從伺服器往客戶端同步

freplicationflags

屬性描述

bnetowner

在目標機器上被playercontroller控制

bnetinitial

初始網路更新

bnetsimulated

actor是 remoterole 模擬的.

brepphysics

actor的replicatedmovement.brepphysics 為true

components(元件)

多數componet是不複製的, 因為多數邏輯是在actor中完成的, 只需要同步compoent相關的呼叫即可, 除非component本身需要直接進行屬性和事件的複製.

元件複製分兩種:

aactorcomponent::setisreplicated(true)

variables(變數)

伺服器的變數改動時會傳送到客戶端進行更新, 客戶端的自行更改會被覆蓋.

uproperty

(replicated)

tarray

<

uattributeset

*> spawnedattributes;

uproperty(transient, replicatedusing=onrep_isactive)

uint32 bisactive:1;

函式呼叫

其實就是rpc. 

伺服器呼叫客戶端執行

ufunction

(client

);void

clientrpcfunction

();

客戶端呼叫伺服器執行

ufunction

(server

);void

serverrpcfunction

();

伺服器呼叫, 伺服器和客戶端執行

ufunction

(netmulticast

);void

multicastrpcfunction

();

一些注意事項:

預設rpc是不可靠的, 除非加個標記:

ufunction

(client

,reliable

);void

clientrpcfunction

();

rpc函式可以加入校驗函式:

ufunction

(server

,withvalidation

);void

somerpcfunction

(int32

addhealth

);

如果校驗不沒通過, 伺服器會踢掉這個客戶端

bool

somerpcfunction

_validate

(int32

addhealth

)return

true;

// this will allow the rpc to be called

}void

somerpcfunction

_implementation

(int32

addhealth

)

其它

並不是所有的actor都會被同步的, 而與你」相關」的, 比如不在你視野範圍內的就不需要同步

UE4學習筆記 Gameplay Classes

增加類 編輯器中有乙個類嚮導,可以生成類所需要的檔案和基礎巨集 標頭檔案由於ue4對c 做了擴充套件,實現了如序列化反射等特性,跟qt的做法類似 在 中加入一些巨集關鍵字,在編譯期間生成相應的c 因此,對於每個類來說,都有會生成乙個classname.generated.h的檔案 類宣告uclass...

UE4學習筆記 Gameplay Classes

增加類 編輯器中有乙個類嚮導,可以生成類所需要的檔案和基礎巨集 標頭檔案由於ue4對c 做了擴充套件,實現了如序列化反射等特性,跟qt的做法類似 在 中加入一些巨集關鍵字,在編譯期間生成相應的c 因此,對於每個類來說,都有會生成乙個classname.generated.h的檔案 類宣告uclass...

UE 4 學習筆記 1

ue4 unreal engine 4 虛擬 虛幻 引擎 4 遊戲開發是一項高度複雜的 開發工作。基本知識內容 但是是否需要學完這麼多知識才能開發遊戲?顯然,這樣學習遊戲開發入門成本太高。於是,前人將基礎知識的複雜 進行了封裝 使得入門的遊戲開發者可以重點關心遊戲邏輯和功能方面的 無需接觸最底層的知...