免费国产网站_秋霞午夜一区二区三区视频_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在线_国产精品无码一区二区在线观一_色中色激情影院_浪潮av色_欧美精品久久久久久久久大尺度_在线日韩第一页 | 中文字幕无码免费久久99_成人做爰69片免费看网站_精品99日产一卡2卡三卡4_肉体裸交丰满丰满少妇在线观看_91另类_熟妇与小伙子matur老熟妇e | 无码av岛国片在线播放_色偷偷在线观看_色香蕉色香蕉在线视频_成人影院午夜_中文字幕乱码一区二区_久久久久久网址 | 麻豆国产成人AV高清在线_国内精品久久人妻互换_亚洲欧美一区二区成人片_草草草草视频_www.youjizz.com欧美_浓毛老太交欧美老妇热爱乱 | 日本人妻A片成人免费看_天堂在线www官网_欧美日韩国产在线一区_一区二区视频传媒有限公司_国产91色欲麻豆精品一区二区_成人高潮片免费视 | 欧美精品亚洲精品日韩专区一乛方_国产精品无码AV不卡顿_性8sex8春暖花开亚洲地址_国产精品成人99一区无码_免费日韩一区二区_999国产精品视频一区 | 成人乱码_国产视频二区三区_亚洲自拍中文字幕_亚洲人亚洲精品成人网站_色天天躁夜夜躁天干天干_久久中文字幕无码中文字幕有码 | 国产成人精品优优AV_久久成人国产精品免费_有剧情的av_日日摸日日碰夜夜爽视频_久久精品2019中文字幕_2021av天堂网手机版 | 国产91对白在线播放_黄色成人在线免费观看_精品字幕_久久综合se_国产日韩视频一区二区三区_av免费在线看网站 | 久久久久亚洲AV综合仓井空_国产精品污WWW在线观看_成年人一级片_国产精品嫩草影院奶水_巨大黑人极品videos精品_中文字幕永久免费视频 | 人妻AV中文系列_又爽又色又高潮的免费软件_久久久久久久久久久网站_国产在线精品免费av_国产精品白虎_天堂俺去俺来也www久久婷婷 | 精品国产乱码久久久久_久久免费看少妇高潮V片特黄_丰满熟女人妻中文字幕免费_亚洲成AV人片在WWW色猫咪_刘亦菲毛片一区二区三区_人成午夜免费大片 | 色偷偷亚洲男人本色_中文字幕在线观看91_国产精品久久二区_99色精品_无码人妻精品一二三区免费_国产在线播放线播放 | 97伦片_欧美大片18禁AAA片免费_边吃奶边添下面好爽_啪啪av大全导航福利_天堂资源在线官网bt_国产在线青青草 | av大全免费在线观看_91视频污黄_亚洲午夜av久久久精品影院_黄网亚洲_中文字幕精品一区二区2021年_国产三级Av一区二区三区 | 成年女人免费v片_国产精品免费高清_日本高清一区二区三区四区_第一福利社区1024_中国黄色软件_国产视频久久久 | 欧美黑人视频_国产精品美女一区二区三区四区_XXX舌L伦农村人XXX_亚洲专区一二三_曰批全过程免费视频在线观看草莓_heyzo无码综合国产精品 | 全程露脸3p在线观看91_亚洲精品国产成人片在线观看_中文字幕一区二_国模大尺度福利视频在线_精品国偷自产在线_xxxxhd69日本hd | 国产女同互慰高潮流水视频_精品久久久久成人码免费动漫_亚洲国产成人久久一区_野草乱码一二三四区别_国产成人免费观看视频_亚洲日韩∨A无码中文字幕 | 日本在线小视频_国产精品综合一区二区_亚洲无人区编码国产激情_日韩在线一区二区三区_青青草原精品99久久精品66_一级黄色片视频 91性高湖久久久久久久久网站_催眠极品YIN荡人妻合集H_国产精品久久久久久妇女6080_亚洲欧美在线观看_少妇老师寂寞高潮免费A片_一区二区三区视频国产日韩 | 久操伊人_CHINESE中国人妻VIDEO_韩国色网站_欧美疯狂性xxxxxbbbbb_麻豆视频网址_欧美3p在线观看一区二区三区 | 亚洲精品精_av综合一区_91精品人妻一区二区三区_最近更新2019中文字幕_欧美特级bbb毛片_女女同性女同一区二区三区91 | 麻豆优品_欧美videosfreeⅹ尸交_91一区二区三区在线观看_日韩精品中文字幕无码一区_伊人免费视频2_2019日韩中文字幕 | 一级播放_日韩免费精品_欧美日韩精品一区二区三区不卡_性感美女一区二区三区_男插女高潮一区二区_亚洲大逼 | aaa黄色片_中文字幕日韩亚洲_黄色操比片_欧美国产中文动漫日韩欧美在线_中文字幕综合一区_福利在线免费视频 | 欧美一区二区三区精品视频_亚洲福利一区二区三区_日韩二级毛片_日本色高清_懂色av午夜一区二区三区蜜桃_国产成人精品免费视 | 亚洲成av人综合在线观看_奇米777在线_中文字幕无码专区一VA亚洲V专区在线_亚洲一区日韩欧美_国产亚洲日韩一区二区三区_国产精品自产拍在线观看桃花 色婷婷一区二区精品无码区_91久久夜色精品国产爽爽_亚洲鲁丝片AV无码多人_爱爱二区_欧美在线播放一区_精品麻豆丝袜高跟鞋AV | 久久影院综合精品_小明看欧美日韩免费视频_www.88av.com最新网址_女上位av片在线观看免费_极品色av影院_亚洲人天堂 | 韩国日本在线视频_林深见鹿免费高清在线观看39集_国产美女裸体永久无遮挡_yw.193.cnc爆乳尤物未满_久久大香萑太香蕉av_成年人免费网站视频 | 99精成人_国产欧美在线一区二区三区_国产AV综合第一页_丁香五月开心婷婷激情综合_潜行者1—42集免费观看视频播放_91一区二区国产好的精华液 | 91精品国产99久久久久久红楼_欧美高清在线一区二区_www.99在线观看_亚洲av日韩av不卡在线观看_国产一区二区三区无码_亚洲—本道在线无码AV发 | 亚洲精品无吗_一本色道久久综合一_中文字幕精品一区二区三区在线_中文字幕亚洲天堂_无码专区—va亚洲v天堂麻豆_偷拍视频免费看 | 少妇高潮惨叫喷水在线观看_劲爆欧美精品36页_浪浪视频色版_欧美一级看片_深夜视频一区二区三区_国产高清欧美情侣视频 | 中文字幕人妻第一区_亚洲日韩精品无码专区网址_av在线中文_免费99精品国产自在现线_强姧伦久久久久久久久_自拍视频网站 | 中文字幕在线日_免费看性视频xnxxcom_希岛爱理一区二区三区av高清_国产亚洲网站_琪琪色源网_亚洲国产成人AV网站 | 亚洲AV永久中文无码精品_视频一区精品_欧美一级高清在线_国产一级a一级a爰片免费无_午夜欧美日韩精品久久久久久_国产精品91色 | 亚洲女人乱搞_AV无码不卡一区二区三区_50岁四川熟女A片_欧美日韩91_日韩精选一区_免费女人裸体视频无遮挡免费网站 | 日韩欧美精品一区二区_国产精品视频资源_伊人久久综合热线大杳蕉_18禁成人无遮羞网站免费_亚洲AV无码AV在线影院_丰满熟妇另类激情 | 色翁荡息又大又硬又粗视频_久久国产亚洲AV无码_国产精品va_窝窝影院午夜看片_真人一级毛片_欧美高清在线视频一区二区 | 日本新japanese乱熟_亚州欧洲日韩精品_jizz日本少妇高潮出水_亚洲AV无码一区二区乱子仑_黄色123_俄罗斯精品无码一区二区 | 午夜福利片1000无码免费_性高朝久久久久久久久久_麻豆免费看片_插吧插吧综合网_91亚洲欧美_日韩黄色三级视频 |