Unity3D用Network实现区域网连网

这几天做了一个CS的游戏,在这个游戏里,我用到了NetWork来创建服务器和客服端,和实现服务器和客服端的连接,下面是代码:

using UnityEngine;
using System.Collections;

public class MyNetwork : MonoBehaviour {

 public int connections=10;   //人数
 public int listenPort=8899;  //端口
 public bool useNat=false;
 public string IP="127.0.0.1";  //IP地址
 public GameObject playerPrefab;

   void OnGUI()
      {
  if (Network.peerType == NetworkPeerType.Disconnected) {


        if (GUILayout.Button ("创建服务器")) {
            //创建服务器的操作
            NetworkConnectionError error = Network.InitializeServer (connections, listenPort, useNat);
            print (error);


            }
        if (GUILayout.Button ("连接服务器")) {

           NetworkConnectionError error=Network.Connect(IP,listenPort);
           print(error);
          
        } 

        } else if (Network.peerType == NetworkPeerType.Server) 
        {
            GUILayout.Label("服务器创建完成");
        
        }
        else if(Network.peerType==NetworkPeerType.Client)
        {
          GUILayout.Label("客服端已经接入");
        
        }

        }
    
        //服务器初始化
        //这2个方法都是在服务器端调用的
    void  OnServerInitialized()
    {
    print("server初始化成功");
    int group= int.Parse(Network.player+"");//直接访问Network.player会得到当前客服端的索引值是唯一的
    //Network.player;//访问到当前的player客服端
    Network.Instantiate(playerPrefab, new Vector3(0,10,0),Quaternion.identity,group);

    }

    //玩家连接服务器
    void OnPlayerConnected(NetworkPlayer player)
    {

    print("一个客服端连接过来了,Index Number:" +player);

    }

    //客服端
    void OnConnectedToServer()
    {

    print("我成功连接了服务器");
    int group= int.Parse(Network.player+"");//直接访问Network.player会得到当前客服端的索引值是唯一的
    //Network.player;//访问到当前的player客服端
    Network.Instantiate(playerPrefab, new Vector3(0,10,0),Quaternion.identity,group);

    }


    //network view 组件用来局域网之内去同步一个游戏物体的组件属性
    //network view 会把创建出来它的客服端作为主人就是主客服端 其他客服端都会以主客服端为主

 }


这里需要注意的是:你要实现数据同步的对象身上必须要绑定一个network view 组件

本文出自 “计算机” 博客,请务必保留此出处http://5152481.blog.51cto.com/5142481/1604108

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。