• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            的筆記

            隨時隨地編輯

            UE4 Net role, Replicated and RPC

            Net Role

            AActor.Role描述了角色的網絡屬性,從而決定了rpc和replicated時的行為表現。這3個網絡Role屬性分別是:ROLE_Authority,ROLE_AutonomousProxy,ROLE_SimulatedProxy

          1. ROLE_Authority,在服務器上的所有角色都是Authority屬性
          2. ROLE_AutonomousProxy,客戶端上的本地角色
          3. ROLE_SimulatedProxy,客戶端上的網絡角色
          4. so

          5. 服務器上的所有角色都是Authority屬性,當前控制的角色可以用IsLocalControlled區分
          6. 客戶上當前控制的角色具有Autonomous屬性
          7. 客戶端上的遠程角色具有SimulatedProxy屬性
            Actor 的 Role 和 RemoteRole 屬性

            Net Mode

            ENetMode AActor.GetNetMode()

          8. NM_Standalone,
            /** Standalone: a game without networking, with one or more local players. Still considered a server because it has all server functionality. */
          9. NM_DedicatedServer,
            /** Dedicated server: server with no local players. */
          10. NM_ListenServer,
            /** Listen server: a server that also has a local player who is hosting the game, available to other players on the network. */
          11. NM_Client,
            /** * Network client: client connected to a remote server. * Note that every mode less than this value is a kind of server, so checking NetMode < NM_Client is always some variety of server. */

          12. Replicated Data

            Actor中的Replicated數據自動復制到所有客戶端上

            客戶端數據不能復制到服務器,只會在客戶端本地生效

            so

          13. 如果數據定義為replicated,最好僅在server上進心更新,在client上只讀,避免引起不必要的混淆。

          14. 這樣判斷端的屬性:
          15.     在C++中判斷是否為服務器:Role == ROLE_Authority
          16.     在BP中判斷是否為服務器:HasAuthority
          17. Replicated的數據在bp中set/get的時候會頭頂多頂2個小球


            Replicated Data in C++

            #include "Net/UnrealNetwork.h"
            UPROPERTY(BlueprintReadOnly,Replicated)
            float Health;
            ------
            voidATestNetworkCharacter::GetLifetimeReplicatedProps(TArray< FLifetimeProperty> & OutLifetimeProps) const
            {
            Super::GetLifetimeReplicatedProps(OutLifetimeProps);
            DOREPLIFETIME(ATestNetworkCharacter, Health);
            }
            

            如果不包含頭文件UnrealNetwork.h會報錯:

            error C3861: 'DOREPLIFETIME': identifier not found


            RPC

            函數有3種replication方式

          18. Multicast---在服務器調用,然后自動轉到客戶端
          19. Server---被客戶端調用,僅在服務器執行;必須在有Net Owner的Actor上使用
          20. Client---被服務器調用,僅在其所有者客戶端執行;必須在有Net Owner的Actor上使用

          21. Net Owner
          22. Actor如果是Player controller或被Player Controller所擁有,則此actor有Net Onwer

          23. 也就是說除了多播,rpc函數如果想調用成功必須有以下限制條件
          24. Actor是一個Player Controller類型;
          25. Actor被一個Player Controller所擁有;

          26. 您必須滿足一些要求才能充分發揮 RPC 的作用:
          27. https://docs.unrealengine.com/latest/CHN/Gameplay/Networking/Actors/RPCs/index.html
          28. 它們必須從 Actor 上調用。
          29. Actor 必須被復制。
          30. 如果 RPC 是從服務器調用并在客戶端上執行,則只有實際擁有這個 Actor 的客戶端才會執行函數。
          31. 如果 RPC 是從客戶端調用并在服務器上執行,客戶端就必須擁有調用 RPC 的 Actor。

          32. xxx

            xxx

          33. xxx
          34. xxx

            xxx

          35. xxx
          36. xxx

            xxx

          37. xxx
          38. posted on 2017-01-14 16:51 的筆記 閱讀(2918) 評論(0)  編輯 收藏 引用

            久久久久免费视频| 久久久久国产一级毛片高清版| 久久精品中文字幕久久| 免费国产99久久久香蕉| 久久精品亚洲精品国产欧美| 国产精品一区二区久久精品涩爱 | 无码AV中文字幕久久专区| 亚洲精品无码久久千人斩| 久久精品国产只有精品2020| 久久中文字幕人妻熟av女| 99久久99这里只有免费费精品| 激情五月综合综合久久69| 久久亚洲熟女cc98cm| 一本大道加勒比久久综合| 伊人久久大香线蕉综合网站| 欧美日韩中文字幕久久伊人| 久久精品水蜜桃av综合天堂| 精品人妻伦九区久久AAA片69| 精品午夜久久福利大片| 婷婷综合久久中文字幕蜜桃三电影| 久久久精品视频免费观看| 久久国产亚洲精品无码| 色欲久久久天天天综合网| 国产精品激情综合久久| 中文字幕久久久久人妻| 国产成人AV综合久久| 久久九九亚洲精品| 97热久久免费频精品99| 丁香五月综合久久激情| 久久婷婷人人澡人人爽人人爱| 久久精品国产精品亚洲精品 | 久久久精品国产亚洲成人满18免费网站| 久久久久精品国产亚洲AV无码| 日本久久久久久中文字幕| 久久A级毛片免费观看| 久久精品综合网| 久久强奷乱码老熟女网站| 麻豆av久久av盛宴av| 性做久久久久久久| 婷婷久久香蕉五月综合加勒比| 999久久久无码国产精品|