案例视频

点击查看【bilibili】

案例功能

这个demo主要功能就是登录服务器,各个玩家的位置同步以及世界频道聊天。
代码在这:https://github.com/ferris1/WindDemo

demo游戏流程

Wind的各个接口使用方式可以看GameMgr.cs文件里面的具体使用。

登录服务器

  1. public void OnConnectBtn()
  2. {
  3. Debug.Log("start connect server");
  4. if (input.text != "")
  5. {
  6. playerId = input.text;
  7. // 连接服务器 将ip和端口传进去
  8. WindNetwork.Agent.GetInstance().ConnectToServer("127.0.0.1", 50100);
  9. }
  10. else
  11. {
  12. Debug.Log("please input account name");
  13. }
  14. }

加入房间

  1. public void SendJoinRoomPakcet()
  2. {
  3. var req = new WindNetwork.PlayerJoinRoomRequest(); // new一个protobuf对象
  4. req.PlayerId = playerId; // 玩家ID
  5. WindNetwork.Agent.GetInstance().SendRequest(req); // 发包给服务器
  6. }

同步移动

  1. public void SendMovePakcet()
  2. {
  3. var req = new WindNetwork.PlayerMoveRequest(); // new一个protobuf对象
  4. req.PlayerId = playerId;
  5. req.Move = new WindNetwork.Vector2(); // protobuf的结构体
  6. req.Move.X = _movement._move.x;
  7. req.Move.Y = _movement._move.y;
  8. req.Look = new WindNetwork.Vector2();
  9. req.Look.X = _movement._look.x;
  10. req.Look.Y = _movement._look.y;
  11. WindNetwork.Agent.GetInstance().SendRequest(req);
  12. }

世界频道发言

  1. public void OnPlayerSend()
  2. {
  3. if (messInput.text == "") return;
  4. var req = new WindNetwork.SpeakOnWorldRequest();
  5. req.PlayerId = playerId;
  6. req.Name = playerId; //玩家名字
  7. req.Content = messInput.text; // 发言内容
  8. WindNetwork.Agent.GetInstance().SendRequest(req); // 发包给服务器
  9. messInput.text = "";
  10. }