using UnityEngine;
using System.Collections;
using ChatState;
using UnityEngine.UI;
public class InputChat : MonoBehaviour {
static public InputChat instance;
public InputField inputField;
void Awake()
{
instance = this;
}
public event finishInputHandler finishInputEvent;
public void OnFinishInput()
{
finishInputEvent(inputField.text);
}
}
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class ShowChat : MonoBehaviour {
static public ShowChat instance;
public Text textShow;
public string ChatContent
{
get { return textShow.text; }
set { textShow.text = value; }
}
void Awake()
{
instance = this;
}
}
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class PlayerChat : NetworkBehaviour {
[SyncVar(hook = "SetContent")]//同步变量 所有的客户端同步内容
string chatContent; //SetContent方法里的参数就是chatContent
int maxContentLenth = 2000;//内容长度
void Start () {
//如果是本地玩家,添加给服务器
if(isLocalPlayer)
InputChat.instance.finishInputEvent += AddContent;
}
//客户端调用服务器的方法
void AddContent(string content)
{
Cmd_UpdateContent(PlayerInfo.name + "说:" + content);
}
[Command]//服务器执行的方法(方法名字前必须是Cmd开头)
void Cmd_UpdateContent(string content)
{
string str = ShowChat.instance.ChatContent;
str +=content+"\n";
if(str.Length>maxContentLenth)
{
str = str.Substring(str.Length - maxContentLenth, maxContentLenth);
}
chatContent = str;
}
[Client] //客户端执行
void SetContent(string content)
{
ShowChat.instance.ChatContent = content;
}
}
using UnityEngine;
using System.Collections;
namespace ChatState{
public delegate void finishInputHandler(string content);
}
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class PlayerInfo : MonoBehaviour {
static public string name;
public InputField inputField;
void Start () {
}
public void SetName()
{
name = inputField.text;
}
}
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class ServerUI : MonoBehaviour {
void Start () {
NetworkManager.singleton.networkAddress = "localhost";//ip地址
NetworkManager.singleton.networkPort = 7777;//端口号
}
public void StartHost() //创建聊天室按钮
{
NetworkManager.singleton.StartHost();
}
public void StartClient() //加入聊天室按钮
{
NetworkManager.singleton.StartClient();
}
}
Unity-Networking
最新推荐文章于 2021-10-21 16:19:35 发布