使用Network实现简易聊天室

举报
陈言必行 发表于 2021/08/14 01:23:50 2021/08/14
【摘要】 1,搭建场景如下图: 2,然后给Canvas上加载组件:NetworkView 3,然后编写如下脚本: using UnityEngine; using UnityEngine.UI; /// <summary> /// 客户端 /// </summary> public class NetworkDemo : MonoBehav...

1,搭建场景如下图:
1

2,然后给Canvas上加载组件:NetworkView
2
3,然后编写如下脚本:

using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 客户端
/// </summary>
public class NetworkDemo : MonoBehaviour { public Text Count; //连接信息 public int connections = 5; //连接数 public int Port = 4444; //端口号 public string SeverIp = "localhost"; // Use this for initialization void Start() { } void OnGUI () { if (GUI.Button(new Rect(10, 0, 100, 20),"创建服务器")) { NetworkConnectionError nc = Network.InitializeServer(connections, Port,false); if (nc == NetworkConnectionError.NoError) { Debug.Log("服务器创建成功"); Count.text += "服务器创建成功\n"; } } } //客户端连接服务器在客户端调用 public void OnConnectedToServer() { Debug.Log("房间创建成功成功"+Network.player.ipAddress); Count.text += "房间创建成功成功" + Network.player.ipAddress; } //客户端退出时调用 public void OnDisconnectedFromServer(NetworkDisconnection info) { Debug.Log("房间被房主解散"+Network.player.ipAddress); Count.text += "房间被房主解散" + Network.player.ipAddress; }

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 服务器
/// </summary>
public class Connclient : MonoBehaviour
{ public Text Count; //连接信息 public int connections = 5; //连接数 public int Port = 4444; //端口号,一定与客户端一致 public string SeverIp = "localhost"; // Update is called once per frame void OnGUI() { if (GUI.Button(new Rect(10, 50, 100, 20), "链接服务器")) { NetworkConnectionError nc = Network.Connect(SeverIp, Port); if (nc == NetworkConnectionError.NoError) { Debug.Log("链接服务器成功"); Count.text += "链接服务器成功\n"; } } } //当玩家链接到服务端,在服务端调用 void OnPlayerConnected(NetworkPlayer player) { Count.text += "当前连接数量:" + Network.connections.Length + "\n"; Count.text += "当前连接玩家Ip" + player.ipAddress; } //当玩家断开的时候,服务端调用 void OnPlayerDisconnected(NetworkPlayer player) { Count.text = "当前连接数量:" + Network.connections.Length + "\n"; Count.text += "当前断开玩家Ip" + player.ipAddress; } 
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 聊天信息管理类
/// </summary>
public class CharText : MonoBehaviour { public InputField InputFile; //输入内容 public Text Char; //聊天记录 public Button btn; //发送按钮 public NetworkView nerworkview; void Start () { //为按钮注册事件 btn.onClick.AddListener(QQChar); } //聊天方法 void QQChar() { nerworkview.RPC("SendMeg", RPCMode.All, InputFile.text); InputFile.text = ""; } [RPC] public void SendMeg(string str) { Char.text += str + "\n"; }

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

4,发布选项上设置自动更新,如下图:
4
5,发布并且运行.exe文件,,(注意:只能有一个服务器(房主),可以运行多个客户端(加入房间的人))
运行结果图:
5


此示例是在一个项目在中使用的,也可以在两个项目中做,一个那样的话就有一个作为专门的服务器,一个做客户端,(即上面的客户端代码和服务器代码分开写,,,)

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/78288422

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。