免费国产网站_秋霞午夜一区二区三区视频_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精華。
    主站蜘蛛池模板: 谍战剧《惊弦》免费观看高清_国产呦萝小初合集密码_看毛片软件_国产麻豆精品一区_97精品免费视频_成人不卡 | 亚洲AV午夜成人影院老师机影院_国产亚洲精品久久7788_亚洲一级一级一级_色视频观看_妺妺窝人体色聚窝窝WWW_久久久久久久久四区三区 | 伊人夜色精品一区二区三区_日韩在线三区_日韩在线视频欧美_玖草资源_日本免费高清一本视频_国产精品网站视频 91在线短视频_国产精品久久艹_91视频大全_超碰97人人模人人爽人人喊_japanese在线观看精品视频_久久精品国产99久久久小说 | 中文字幕日产无码_我要看免费一级毛片_久久久久中文伊人久久久_国产午夜Av无码无片久久午夜_日韩视频国产_一级毛片免费观看久 | 99色影院_三年片在线观看大全有哪些爱奇艺_中文在线天堂网www_又爽又黄又无遮挡网站动态图_午夜男人视频_好男人社区官网www | 在线视频97人人_久久sese_欧美一区日韩二区亚洲三区_国产成人亚洲精品自产在线_黄色网络视频_日本免费www | 日韩欧美国产精品一区二区三区_99热精这里只有精品_国产96av_一区二区三区免费播放_亚洲欧美日韩中文在线制服_亚州综合 | 日本高清在线视频WWW色_一区小视频_日韩欧美国产网站_麻豆蜜桃九色在线视频_东京热制服丝袜无码专区_在线观看亚洲免费视频 | 国产正在播放_久操导航_欧美疯狂做受xxxx高潮_国产日本在线播放va_国产免费AV片在线无码免费看_澳门成人网 | 久久婷婷大香萑太香蕉AV人_欧美日韩精品久久久免费观看_高清无码不卡视频_国产午夜性爽视频男人的天堂_四川丰满少妇被弄到高潮_埃博拉病毒电视免费观看 | 有坂深雪av一区二区精品_亚洲欧洲日韩一区_成人免费高清视频_亚洲特黄一级_欧美久久久精品_亚洲AV成人一二三区观看 | www99re最新地址获取_成人深夜福利在线观看_四虎影视院_777777农村一级毛片_白丝jk自慰高潮_日本一二三视频 | 欧洲色阁中文字幕_www.17.com嫩草影院_瑟瑟久久_欧美亚洲另类久久综合二区_97超碰自拍_日韩av中文字幕一区二区 | 色婷婷狠狠爱_日韩在线aⅴ免费视频_成年美女黄网站色视频免费_欧美日韩视频观看_色偷偷亚洲女人的天堂_极品大长腿啪啪高潮露脸 | 久草久草久草久草_亚洲日韩国产一本视频_蜜桃一级网站._中文字幕av一区二区三区佐山爱_成A∨人片在线观看无码_美女在线一区二区 欧美日韩亚洲国产_久久99精品久久久久婷婷暖91_av青青_国产精品看高国产精品不卡_国产青青在线视频_亚洲av永久无码天堂网 | 成年在线观看免费人视频_岛国a级毛片_精品亚洲永久免费精品_国产亚洲色婷婷久久99精品91_国产xo在线播放视频_久久久国产精品人人片 | 亚洲中亚洲中文字幕无线乱码_亚洲日本免费_天堂网在线最新版www资源网_免费观看欧美成人_亚洲天堂9_污网站在线看 | 小小拗女性BBWXXXX国产_欧美日本亚洲_免费福利网站在线观看_日本成人片在线_激情综合激情五月俺也去_欧美另类精品XXXX人妖 | 亚洲精品无码专区久久久_午夜久久久精品一区二区三区_中文字幕无线码一区_免费看av网_亚洲精品无码久久毛片_伊人黄色 | 黑人一级毛片_对白离婚国产乱子伦视频大全_婷婷天堂网_japanesehdxxxx乳_亚洲精品免费视频_h片在线 | 麻豆一区二区三区_蜜桃网在线观看_日本综合色_欧美一级淫片aaaaaaa免费_国产精品视频tv_国产精品久久久久久在线观看 | 亚洲国产精品VA在线观看黑人_亚洲国产欧美在线人成aaaa20_国产精品久久久久一区二区_国产无套码AⅤ在线观看在线播放_中文字幕久久久人伦_人妻少妇AV无码一区二区 | 国产极品粉嫩在线观看的软件_国产女人乱子对白AV片_91视频久久久久_久久久青草_97一级毛片全部免费播放_日韩和的一区二区 亚洲成人免费在线播放_99久久精品久久久久久清纯_国产火热热av_国语FREE性XXXXXHD_麻豆av在线免费观看_欧美极品在线视频 | 久久大香伊蕉在人线免费AV_fc2成人免费视频_日本无码V视频一区二区_国产三级久久三级久久_色久视频在线播放_国产日产一区二区三区四区五区介绍 | 亚洲日韩在线a视频在线观看_亚洲精品自偷自拍无码_99视频导航_91vip视频_东京热人妻无码一区二区av_麻豆传媒91 | 国产视频久久久久_99在线免费_亚洲成人精品_无码精品第1页_成人va视频_国产精品偷伦费观看一次 | 色亚洲导航_av在线不卡一区_一本一本久久a久久_芭蕉视频在线观看成人_18出禁止看的啪视频网站_黄色在线免费网站 | 大菠萝福利网_鲁鲁夜夜天天综合视频_2019亚洲日韩新视频_国户精品久久久久久久久久久不卡_青青在线免费视频_伦伦影院午夜理论片 亚洲成年人专区_91麻豆欧美成人精品_五月天婷亚洲天综合网精品偷_精品乱码久久久久久_国产人妖在线视频_九九热re日本精品 | 亚洲毛片av_99热精品国产麻豆_一区二区丝袜_精品91av_天堂网www在线资源链接_麻豆精品视频 | 给我免费播放片高清在线观看视频_电锯惊魂1在线观看免费观看中文版_欧美99久久无码一区人妻A片_又黄又湿免费高清视频_一区二区三区四区高清视频_亚洲欧美日韩精品a∨ | 影音先锋男人午夜资源站_岛国激情视频一区二区三区_最近高清中文在线观看国语字幕7_中文字幕av亚洲精品一部二部_婷婷久久青草热一区二区_强辱丰满的人妻HD高清3转4转 | 国产美女久久精品香蕉69_色天天综合_国产精品伊人久久久_东北妓女口爆吞精毛片_日本欧美精品_欧美性20hd另类 | 国产在线观看一区二区_国产精品黄片_日本爱爱_男人操女人在线观看_亚洲AV日韩AV永久无码PPT_日韩天天操 | 国产成人久久精品一区二区三区_成人av网页_色av性av丰满av_久久久精品视频免费观看_国产无人区卡一卡二卡乱码_成人另类视频 | 91av在线免费_日韩三区视频_久久丫精品_视频一区视频二区欧美_久久免费看片_永久免费观看午夜成人网站 | 国产成a人无v码亚洲福利_性中国少妇熟妇XXXX农村_人人爱天天操_亚洲中文字幕一区精品自拍_中文文精品字幕一区二区_一级α片免费看刺激高潮视频 | 香蕉久久影院_国产一区视频网站_高清情侣国语自产拍在线48页_国产黑色丝袜在线播放_美女网站免费观看视频_国产精品精品久久久久 | free性ⅴideo另类重口_黄色毛片免费视频_麻豆精品二区_果冻tv在线免费观看_日韩精品人妻无码久久影院_丰满人妻妇伦又伦精品国产 | 青青草精品在线视频_国产熟女视频_日本久久久久久久久久久久_我看午夜视频_xx另类性欧美_精品国产一区二区三区高潮视 | 卡一卡二卡三精品_一区精品久久_狠狠色噜噜狠狠狠狠色综合久_视频1区_欧美成人官网二区_亚洲成熟女人毛毛耸耸多 | 日本看黄网站_国产精品你懂的_草草影院最新_XXX性XXX国语对白_国产在线观看免费_中文字幕日本一区 |