Unity_PUN2多人联机API汇总

PUN2多人联机API汇总

代码仅为函数区别和属性展示,并不针对指定功能
按照需要调用即可

服务器相关API和回调

c 复制代码
  #region 服务器相关
  public void 连接服务器()
  {
    PhotonNetwork.ConnectUsingSettings();
    PhotonNetwork.GameVersion = "1";
  }
  public void 离开服务器()
  {
    PhotonNetwork.Disconnect();
  }
  public override void OnConnectedToMaster()
  {
    Debug.Log("加入服务器时回调");
  }
  public override void OnConnected()
  {
    Debug.Log("连接到服务器时回调");
  }
  public override void OnDisconnected(DisconnectCause cause)
  {
    Debug.Log("离开服务器时回调");
  }
  #endregion

大厅相关API和回调

c 复制代码
 #region 大厅相关
  public void 加入大厅()
  {
    PhotonNetwork.JoinLobby();
    PhotonNetwork.CurrentLobby.Name = "山西一区";
    Debug.Log(PhotonNetwork.CurrentLobby.Name);
    Debug.Log(PhotonNetwork.CurrentLobby.Type); //大厅类型
  }
  public void 离开大厅()
  {
    PhotonNetwork.LeaveLobby();
  }
  public void 大厅()
  {
    TypedLobby tl = new TypedLobby("山西一区",LobbyType.Default); //创建大厅
    Debug.Log(tl.Name); // 大厅名字
    Debug.Log(tl.Type); //大厅类型
  }
  public void 大厅信息()
  {
    //大厅的子类
    TypedLobbyInfo tli = new TypedLobbyInfo();
    Debug.Log(tli.PlayerCount);//当前大厅内的玩家数
    Debug.Log(tli.RoomCount);  //当前大厅内的房间数
  }
  public override void OnJoinedLobby()
  {
    Debug.Log("加入大厅时回调");
  }
  public override void OnLeftLobby()
  {
    Debug.Log("离开大厅时回调");
  }
  #endregion

房间相关API和回调

c 复制代码
  #region 房间相关
  public void 创建房间()
  {
    RoomOptions ro = new RoomOptions();
    ro.IsOpen = true;
    ro.IsVisible = true;
    ro.MaxPlayers = 4;
    if (PhotonNetwork.CreateRoom("谢同学测试房间", ro))
    {
      Debug.Log("手动调用创建房间函数 ");
    }
  }
  public void 加入房间()
  {
    PhotonNetwork.JoinRoom("谢同学测试房间");
  }
  public void 离开房间()
  {
    PhotonNetwork.LeaveRoom();
  }
  public void 房间选项()
  {
    //用于创建房间
    RoomOptions ro = new RoomOptions();
    ro.IsVisible = true;                    //是否可见
    ro.IsOpen = true;                       //是否可以加入
    ro.MaxPlayers = 4;                      //最大人数设置
    ro.PlayerTtl = 1;                       //玩家断线超时删除时间
    ro.EmptyRoomTtl = 1;                    //空房间超时删除时间
    ro.CustomRoomProperties = null;         //自定义房间属性
    ro.CustomRoomPropertiesForLobby = null; //大厅中列出的自定义房间属性。
    ro.PublishUserId = true;                //房间内是否公开名字
    ro.BroadcastPropsChangeToAll = true;    //广播属性给所有玩家
  }
  public void 房间信息()
  {
    //用于大厅房间列表
    RoomInfo ri = null;
    Debug.Log(ri.RemovedFromList); //房间满了是否继续从列表中移除
    Debug.Log(ri.masterClientId);  //显示房主信息
    Debug.Log(ri.CustomProperties);//显示房间属性
    Debug.Log(ri.Name);           //显示房间名
    Debug.Log(ri.PlayerCount);    //显示当前房间人数
    Debug.Log(ri.MaxPlayers);     //显示房间最大人数
    Debug.Log(ri.IsOpen);         //显示房间是否公开
  }
  public void 房间()
  {
    //房间信息的子类
    Room ri = null;
    Debug.Log(ri.IsOffline);                  //是否离线
    Dictionary<int, Player> tmp = ri.Players; //房间中的玩家
    string[] tmp2 = ri.ExpectedUsers;         //预期加入的玩家列表,提前分配机票

  }
  public override void OnCreatedRoom()
  {
    Debug.Log("创建房间成功时回调");
  }
  public override void OnCreateRoomFailed(short returnCode, string message)
  {
    Debug.Log("创建房间失败时回调");
  }
  public override void OnJoinedRoom()
  {
    Debug.Log("加入房间时回调");
    Debug.Log("房间当前人数:" + PhotonNetwork.CurrentRoom.PlayerCount);
    PhotonNetwork.LoadLevel("Game");
  }
  public override void OnJoinRoomFailed(short returnCode, string message)
  {
    Debug.Log("加入房间失败时回调");
  }
  public override void OnLeftRoom()
  {
    Debug.Log("离开房间时调用");
  }
  public override void OnPlayerEnteredRoom(Player newPlayer)
  {
    Debug.Log(newPlayer.NickName + "进入了服务器");
  }
  #endregion

PhotonNetwork相关

c 复制代码
  #region PhotonNetwork相关
  public void 光子网络相关()
  {
    Debug.Log(PhotonNetwork.ServerAddress); //服务器地址
    Debug.Log(PhotonNetwork.CloudRegion);   //服务器区域
    Debug.Log(PhotonNetwork.AppVersion);    //应用版本
    Debug.Log(PhotonNetwork.GameVersion);   //游戏版本
    Debug.Log(PhotonNetwork.InRoom);        //是否在房间内
    Debug.Log(PhotonNetwork.InLobby);       //是否在大厅内
    Debug.Log(PhotonNetwork.IsConnected);   //是否连接服务器
    Debug.Log(PhotonNetwork.IsConnectedAndReady);//是否连接服务器并已准备
    Debug.Log(PhotonNetwork.IsMasterClient);//是否为主机
    Debug.Log(PhotonNetwork.LocalPlayer.NickName) ;//本地玩家名字
    Debug.Log(PhotonNetwork.MasterClient);  //返回主机玩家
    Debug.Log(PhotonNetwork.NetworkClientState);//网络客户端状态
    Debug.Log(PhotonNetwork.NickName);      //本机名字
    Debug.Log(PhotonNetwork.OfflineMode);
    Debug.Log(PhotonNetwork.PhotonServerSettings);
    Debug.Log(PhotonNetwork.PlayerList);
  }
  #endregion

PhotonStream相关

c 复制代码
  #region PhotonStream相关
  public void PhotonStream相关()
  {
    PhotonStream ps = new PhotonStream(true,new object[1]);
    object o1 = new object();
    Debug.Log(ps.IsReading); //是否可读
    Debug.Log(ps.IsWriting); //是否可写,只有本机才可以写
    Debug.Log(ps.Count);     //数量
    Debug.Log(ps.ReceiveNext());
    Debug.Log(ps.PeekNext());
  }
  #endregion

更新显示房间列表

c 复制代码
  public override void OnRoomListUpdate(List<RoomInfo> roomList)
  {
    Debug.Log("打印所有房间信息");
    foreach (RoomInfo item in roomList)
    {
      Debug.Log(item.Name);
    }
  }
相关推荐
修炼的dance2 分钟前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M8 分钟前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写10 分钟前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李12 分钟前
一个复杂的动态表单是如何实现的
前端·设计模式
陈随易26 分钟前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
风骏时光牛马37 分钟前
前沿视界
前端
kyriewen42 分钟前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员
陈随易1 小时前
3000 万人在用的翻译插件,重写一遍就是一门生意
前端·后端·程序员
IT_陈寒1 小时前
Vue的这个响应式陷阱,差点让我加班到天亮
前端·人工智能·后端
Flynt2 小时前
别写拖拽行为,只声明"能拖到哪":UIST 最佳论文的拖拽方案我实测了
前端·svg·preact