教程见代码,我全部注释了。如果有不懂,就评论问我,我一般晚上会看一下。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ExitGames.Client.Photon.Chat; //必须声明该命名空间
public class MyClient : MonoBehaviour, IChatClientListener//必须实现该接口,下面的方法都是该接口的一些方法
{
private ChatClient client; //声明一个用户对象
private string AppID; //用于保存AppID,上一篇教程的提到过
private string AppVersion; //用于保存我们聊天APP版本号
private string userName; //用于保存用户名
void Start()
{
client = new ChatClient(this);
AppID = ChatSettings.Load().AppId;//获取AppID
AppVersion = "1.0.0"; //随便填写一个版本号,只有版本号相同的用户才能相互聊天
userName = "那位先生"; //用户的名字,
//用户连接服务器
client.Connect(AppID, AppVersion, new ExitGames.Client.Photon.Chat.AuthenticationValues(userName));
Debug.Log("连接中...");
}
void Update()
{
if (client != null) //如果不为空,则调用下面方法
{
client.Service();//该方法必须调用,否则IChatClientListener接口的方法都不能正常执行。
}
}
//该方法在用户连接成功时自动调用。
public void OnConnected()
{
Debug.Log("我连接进来啦");
//下面这个方法用于订阅频道,只有订阅频道之后,才能接受到这个频道的信息,比如现在有人在工会聊天,你就可以接受到。
client.Subscribe(new string[] { "世界聊天频道", "工会聊天频道" });//这里我们订阅了世界聊天频道和工会聊天频道
//这个方法用于向频道发送消息,这里我们向世界聊天频道发送了大家号,那么订阅了这个频道的人都能接受到这条消息。
client.PublishMessage("世界聊天频道","大家好");
//这个方法用于发送私人消息,这里我们向一个叫小小的用户发送了一条消息“你好”。如果这个用户在线的话,他将收到这条消息。
client.SendPrivateMessage("小小","你好");
}
//该方法在用户断开连接成功时自动调用。
public void OnDisconnected()
{
Debug.Log("我失去连接啦");
}
//该方法当用户状态改变时自动调用。
public void OnChatStateChange(ChatState state)
{
Debug.Log("现在我的状态是:" + state);
}
//该方法用于获取来自订阅的频道的消息,当有消息传来时自动调用
public void OnGetMessages(string channelName, string[] senders, object[] messages)
{
Debug.Log("频道:"+channelName+",发送者:"+senders[0]+", 消息内容:"+messages[0]);
}
//该方法用于获取私人消息,当消息传入时自动调用
public void OnPrivateMessage(string sender, object message, string channelName)
{
Debug.Log("频道:" + channelName + ",发送者:" + sender + ", 消息内容:" + message);
}
//这个用于订阅频道成功时,自动调用
public void OnSubscribed(string[] channels, bool[] results)
{
Debug.Log("哈哈,我订阅" + channels[0] + "的结果是:" + results[0]);
}
//这个用于订阅频道失败时,自动调用
public void OnUnsubscribed(string[] channels)
{
Debug.Log(channels[0] + "订阅失败");
}
//这个方法用于获取朋友更新状态,见Test()方法
public void OnStatusUpdate(string user, int status, bool gotMessage, object message)
{
}
public void Test()
{
client.AddFriends(new string[] { "小小", "大大" });//首先我们把小小,和大大加入朋友列表
client.SetOnlineStatus(1);//这个方法用于设置自己的状态,参数为int类型。加入小小或者大大调用这个设置状态的方法时。我们就会自动调用OnStatusUpdate方法。
}
//这个用于打印Debug信息,不是很关键,可以不用了解。
public void DebugReturn(ExitGames.Client.Photon.DebugLevel level, string message)
{
}
void OnGUI()
{
if(GUI.Button(new Rect(100,100,100,100),"哈哈"))//退出时,必须关闭连接,否则unity会卡死
{
client.Disconnect();
Application.Quit();
}
}
}