Photon Chat教程详解二

教程见代码,我全部注释了。如果有不懂,就评论问我,我一般晚上会看一下。

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();
        }
    }
}

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值