免费国产网站_秋霞午夜一区二区三区视频_99热在线看_日韩精品久久一区二区_午夜看一级毛片_天天鲁在视频在线观看

  • 您的位置:首頁 > 新聞動態 > Unity3D

    Unity3d網絡通信 - NetWork組件使用

    2019/5/28??????點擊:

    習Unity3d的過程中,經常上網查閱各位大牛的博客,受益匪淺,從今天開始寫自己在學習過程中遇到的問題,總結歸納下來,方便日后復習

    這兩天在學習Unity的網絡模塊,今天先總結Unity自帶的Network組件相關使用方法

    一.網絡管理物體

    搭建網絡,需要先創建一個空物體用來添加網絡管理組件,首先要給空物體添加以下兩個組件

    注意事項: 1. OffLine Scene代表客戶端連接服務器前,等待的場景(游戲大廳)

    .                   OnLine Scene代表客戶端連接服務器后的場景 (游戲場景)

                      2.Spawn Info 服務器卵生信息 :  把網絡預設體(必須掛有網絡組件) 拖入PlayerPrefab , 服務器會把游戲對象孿生到所有連接的客戶端中

    二.游戲對象

    1.Network Identity

          游戲對象(網絡預設體)需要掛Network Identity組件,該組件是網絡的核心,由服務器Spwan(卵生)的物體都必須具備,該組件在卵生的時候會自動分配assetID和權限

    注意事項:1.ServerOnly 勾選后物體只在服務器中存在

                  2.Local Player Authority勾選后在客戶端中存在

    2.實現狀態同步

     游戲對象的控制腳本需要繼承NetWorkBehaviour組件(依賴于NetWorkIdentity),用來實現RPC技術和狀態同步屬性.
    1.Transform同步
    這個組件負責玩家對象在客戶端發出移動指令后,把該玩家的移動同步到所有客戶端中

    注意事項:1.Net Work Send Rate 表示同步Transform的頻率

                    2.Transform Synv Mode 表示同步的模式,可以選擇同步剛體組件,角色控制器等

    然后在控制腳本編寫代碼

        void Update() {
            if (!isLocalPlayer)   //判斷是否是本地客戶端
            {
                return;
            }
            float x = Input.GetAxis("Horizontal");
            float y = Input.GetAxis("Vertical");
            if (x != 0 || y != 0)
            {
                transform.position += new Vector3(x, 0, y);
            }
    }


    注意事項 1.所有網絡控制腳本必須要繼承 NetWorkBehaviour

                  2.在Update里需要先判斷是否是本地客戶端,不是的話Return~!!!  如果沒有這個判斷條件,在客戶端發出指令,網絡里所有的客戶端都會執行

    2.發射子彈與減血的同步

    經過上邊的步驟,已經可以實現物體在網絡里的移動,但我們想要實現在網絡里發射子彈,受到攻擊后還要減血,這些指令都需要在服務器上執行,先來看一下NetWorkBehaviour的常用特性

    [SyncVar]    用于標識序列化變量,實現變量同步             例: (把Hp標識,就可以實現同步減血)

    [Client]        表示只能在客戶端調用

    [ClientCallBack]   表示客戶端執行的回調

    [Command]  表示客戶端向服務端發送的命令,在服務端執行

    [ClientPrc]  表示服務端向客戶端發送的命令,在客戶端執行

    直接來看代碼如何使用:

    //將血量設置為網絡同步變量
        [SyncVar]
        float hp = 100;
        public Slider slider;       //顯示血量的血條
        public GameObject bullet;   //子彈預設體
        void Start () {
            ClientScene.RegisterPrefab(bullet); //在場景注冊預設體
        }
        void Update () {
            // 2.將血量的值賦給slider
            slider.value = hp / 100f;
            if (!isLocalPlayer)
            {
                return;
            }     
            if (Input.GetKeyDown(KeyCode.Q))
            {
                CmdReduceHp();
            }
            if (Input.GetKeyDown(KeyCode.T))
            {
                CmdFire();
            }
        }
        //減血的方法   標識為Command由服務器執行
        //前綴必須是Cmd 開頭
        [Command]
        public void CmdReduceHp()
        {
            hp -= 10;
        }
         //發射子彈的方法
        [Command]
        public void CmdFire()
        {
            GameObject a= Instantiate(bullet, transform.position+transform.right, Quaternion.identity);
            a.GetComponent().AddForce(transform.right*100);   //給子彈添加向右的力
            NetworkServer.Spawn(a);   //由服務器卵生給連接的客戶端
        }

    注意事項:1.網絡預設體需要先在客戶端場景里注冊一下,才能正常產生              

                   2.hp賦值給Slider要寫在判斷是否是本地客戶端前,血條才會正常同步顯示

                   3.Command修飾的方法,由客戶端發起,服務端執行,方法名前必須加Cmd

                   4.監聽鍵盤事件的Iput.GetKeyDown要放在Update里,不能放在Cmd方法里!!!  (此時方法由服務器調用,無法監聽鍵盤事件)

    3.動畫的同步

       要實現游戲對象的動畫同步,還需要添加一個網絡組件,并給組件指定Animator,并勾選Animator里包含的動畫.

    動畫同步需要注意一點,過度條件是Trigger時需要由客戶端發起指令,在服務端執行,再分發給各個客戶端執行,其他條件正常.

    這里Animator的兩個動畫,attack01條件是bool,attack02條件是Trigger ,代碼如下:

    Animator ani;  
        void Start()
        {
            ani = GetComponent();
        }
         void Update () {
         if (Input.GetKeyDown(KeyCode.Q)) 
            {
                ani.SetBool("attack01", !ani.GetBool("attack01"));        
            }
            if (Input.GetKeyDown(KeyCode.E))
            {
                CmdAttack02();
            }
        }
        [Command]    //服務器執行
        void CmdAttack02()
        {
            RpcPlayTrigger();
        }
        [ClientRpc]   //由服務器端調用,在客戶端執行 
        void RpcPlayTrigger()
        {
            ani.SetTrigger("attack02");
        }
    希望對UNITY愛好者有拋磚引玉的療效,敬請關注WONGLOVE獲取更多UNITY精華。
    主站蜘蛛池模板: 精品国产一区二区三区AV_国产精品大片www_蜜乳av最新地址_亚洲精品3区_中文字幕视频在线看5_丁香综合在线 | 亚洲极美女高清视频_日日夜夜成人_一级日韩_播放毛片_AV一本久道久久波多野结衣_欧美成人三区 | 九九视频网_久久国产日本_男人的天堂色欲网HTTP_亚洲大尺度专区无码浪潮AV_亚洲欧美日韩国产综合一区二区_欧美日韩视频无码一区二区三 | 九幺91短剧免费网站_国产精品一区二区在线看_国产91色在线播放_人人干夜夜操_国产日韩精品一区二区三区春色_在线A级毛片无码免费真人 | 亚洲午夜免费_亚洲国产尤物_久久黄色片_国产无遮挡一区二区三区毛片日本_熟女熟妇伦av网站_国产区精品在线观看 | 欧美一级bbbbb性bbbb喷潮片_日韩中文字幕精品_久久精品视频16_人人爽人人爽人人爽_多人乱大交xxxxx变态_免费在线观看中文字幕 | 国产精品乱码一区二区视频_国产精品视频播放_99热精品视_成人日韩在线观看_亚洲永久_第一色站 | 国产精品乱码色情一区_激情久久AV一区AV二区AV三区_樱桃视频首页在线观看_男女一对一免费视频_成人无码看片在线观看免费_国产麻豆一区二区三区 | 美女诱惑视频_亚洲欧洲自拍拍偷综合_午夜免费无码福利视频麻豆_国产中文字幕精品在线观看_亚洲成熟丰满熟妇高潮XXXXX_999re5这里只有精品 | 叶子楣成人爽a毛片免费啪啪_国产精品无码AV片在线观看播_久艹在线观看_国产精品一区二区久久不卡_亚洲大乳无码一级毛片_久久综合av色老头免费观看 | 亚洲人成网线在线播放_黑森林av导航_成年日韩片av在线网站_www.一起操_夜色321看片资源站_国产成人无码免费视频麻豆 | GOGOGO免费高清看中国国语_亚洲视频第一页_少妇高潮不断出白浆AV_麻豆天美国产一区在线播放_无遮挡无码一级毛片免费看_欧美亚洲国产日韩在线a不卡 | 96av麻豆蜜桃一区二区_国产综合精品女在线观看_www色综合_国产精品不卡在线观看_久久精品国产国产精_极品少妇ⅩXXXⅩ护士 | 欧美肥妇视频_无码午夜嘿嘿嘿_www.午夜在线b站.com_91社区在线观看播放_国产伦精品一区二区三区免_亚洲人成网站在线 | 亚洲激情二区_免费a级毛片又大又粗又黑_久久久久久久久久国产精品_久久精品—区二区三区_国产免费av高清_中文字幕永久在线观看 | 亚洲中文字幕在线观看_可以免费在线观看av的网站_国产裸体裸美女无遮挡网站_人妻夜夜爽天天爽三区丁香花_欧美第一页码_上流社会在线看 久久免费观看午夜成人网站_国产高清一区二区_久久久网站免费_99re久久精品国产_国产色网_久久99精品久久久久久不卡 | 公天天吃我奶躁我_少妇淫片a特黄_久久日本片精品aaaaa国产_波多野结衣一区二区三区高清AV_一级毛片免费高清中文字幕久久网_在线视频播放大全 | 午夜少妇福利_亚洲av无码成人精品国产_国产亚洲精品久久久久四川人_老司机福利片_在线看一级毛片免费视频播放_国产亚洲精品成人av久久果冻 | 国产精品免费一区二区三区四区_亚洲日本天堂三级_yw视频在线观看_日韩涩图_国产精久久久久久久妇剪断_久久草视频 | 久久精品不卡_51国产黑色丝袜高跟鞋_久久精品国产精品亚洲毛片_超碰人人看人人_久激情内射婷内射蜜桃人妖_欧美日激情日韩精品嗯 | av无码一级毛片免费_91国内免费视频_欧美福利视频一区二区_日本大人吃奶视频xxxx_欧美成人一区在线观看_九九超碰 | 9久热久爱免费精品视频在线_中日韩免费毛片_91小视频在线播放_国产精品一v二v在线观看_911国产影院在线观看_日本精品中文字幕在线播放 | 337p日本大胆欧美人术艺术免费_CHINESE国产同志VIDEO_www日韩视频_欧美一级黑人aaaaaaa做受_国产久99_九九免费观看视频 | 亚洲成av人片天堂网无码】_91大神视频在线播放_猫咪av成人永久网站网址_国产亚洲精彩久久_亚洲国产香蕉碰碰人人_久草在线视频资源 | 又爽又猛又粗国产免费_夜夜躁狠狠躁_欧美三极_无码成人片在线播放_高清一区二区三区视频_欧美久久久久久久久久伊人 | 国产99久久久国产精品~~牛_日本www_九七在线视频_久久国产色综合_粉色视频在线观看高清免费完整_一级黄色免费视频 | 亚洲人成绝网站色www_国产福利在线视频_三年片在线观看免费大全爱奇艺_小明精品国产一区二区三区_一区二区亚洲精品_国产欧美日韩精品丝袜高跟鞋 | 日本xx13一18处交高清_亚洲国产精品无码二区_国产偷亚洲专区在线观看_下面一进一出好爽视频_一级在线免费视频_jizz亚洲大全 | 天天干天天色天天干_中文字幕亚洲成人_超碰在线中文_亚洲综合另类小说色六月_国产成人av三级在线观看_免费a级片视频 | 成年在线观看免费人视频_岛国a级毛片_精品亚洲永久免费精品_国产亚洲色婷婷久久99精品91_国产xo在线播放视频_久久久国产精品人人片 | 最近国产精品视频_永久黄色网_作爱视频免费观看_gg在线精品视频_9色在线_99国产精品欧美一区二区三区 | www.4虎影院_老师你下面太紧进不去动态图_老司机精品视频在线播放_欧洲美女黑人粗性暴交_亚洲激情综合在线_亚洲免费色 | 中文字幕一区二区三区在线看_亚洲AV美女一区二区三区_高潮A片揉搓乳尖乱颤视频_全国免费av_人人九九精品_久久久午夜爽爽一区二区三区三州 | 91精品国产自产老师啪_国产成人毛片无码视频软件_一级生活黄色片_亚洲精品一区无码A片_成人做爰视频www_成人观看网站 | 欧美影院在线观看_日本寝取_久久久久免费看黄A片_日韩欧美一区2区3区_91精品众筹嫩模在线私拍_色偷偷中文字幕一区二区 | 国产欧美一区二区三区在线播放_青青草成人免费在线视频_久久午夜夜伦鲁鲁片无码免费_国产白嫩护士被弄高潮_91在线精品视频_小箩莉末发育娇小性色XXXX | 国产乱子伦农村xxxx_五码亚洲_日韩精品无码人成视频_俺也去一区二区_在线观看亚洲网站_高清色视频在线观看 | 在线视频h_五级黄毛片_亚州综合图片_亚洲我不卡_精品国产一区在线_www.久久婷婷 | 天天干天天色天天干_中文字幕亚洲成人_超碰在线中文_亚洲综合另类小说色六月_国产成人av三级在线观看_免费a级片视频 | 鲁一鲁一鲁一鲁一曰综合网_国产在线无码一区二区三区_亚洲AV中文无码乱人伦在线观看_真实国产乱子伦精品一区二区三区_欧美大尺度一区二区_伊人成人在线视频 | av一区二区三区在线_一级黄色在线视频_国产乱淫精品一区二区三区毛片_乱色欧美激惰_免费国产91_久久久久久综合 |