好友系统步骤

好友系统有两个特殊性,一个是需要让客户端接受添加好友的请求,发送请求响应。

二是在服务器端添加后处理器,作用是在发送响应给客户端前,可以往后处理器里添加一些通用的方法,将一些需要时常刷新的消息(例如新的好友列表)添加到响应里,顺路一起发送给客户端。

客户端:

先在客户端拼好UI,使用了之前的ListView加ListView.Item的方法,详细可以看任务系统,暂时不赘述。书写刷新UI的方法,并且注册给FriendService的OnFriendUpdate,只要有数据变化就刷新列表。先清空,再重置数据,数据从FriendManager中取得,该方法的数据会在角色进入游戏时(OnGameEnter方法)初始化,主要存储了该角色的好友相关信息。

刷新UI的方法与其他大同小异,Instantiate 绑定的Prefab 并且生成在指定区域。

然后为增加好友的按钮绑定上InputBox方法,InputBox.Show()出现输入框,.OnSubmit是点击确认后的事件。

public void OnClickFriendAdd() {
		InputBox.Show("添加好友", "输入要添加的好友名称或者ID").OnSubmit+=OnFriendAddSubmit;
//OnFriendAddSubmit(string input, out string tips)
	}

OnFriendAddSubmit方法会将输入框的字符串提交到FriendService.Instance.SendFriendAddRequest(friendId,friendName);

并且在InputBox内部将tips的字符串赋在输入框的提示text上。

而后,FriendService会构造一个FriendAddRequest()请求,将自身ID与被请求者ID发送至服务器端。

经过服务器端处理后,将会收到OnFriendAddResponse的响应,并且根据响应的结果是成功与否,调用MessageBox显示出有是与否按钮的消息框,给是与否的按钮绑定SendFriendAddResponse的方法。

var confirm = MessageBox.Show(string.Format("{0} 请求加你为好友",request.FromName)
,"好友请求",MessageBoxType.Confirm,"接受","拒绝");

confirm.buttonYes.onClick.AddListener(() =>
            {
                this.SendFriendAddResponse(true,request);
            });

在SendFriendAddResponse里构造FriendAddRequest请求,连同请求方的request,同意与否的信息一起传送到服务器端。

public void SendFriendAddResponse(bool accept, FriendAddRequest request)
{
Debug.Log("SendFriendAdd");
NetMessage message = new NetMessage();
message.Request = new NetMessageRequest();
//源自于被请求方的响应
message.Request.friendAddRes = new FriendAddResponse();
message.Request.friendAddRes.Result = accept? Result.Success :Result.Failed;
message.Request.friendAddRes.Errormsg = accept ? "对方同意" : "对方拒绝";
message.Request.friendAddRes.Request = request;
NetClient.Instance.SendMessage(message);
}

之后就会收到添加成功的消息,弹出MessageBox点击确认。而由于服务器端后处理的作用,OnFriendList也会收到顺带的FriendListResponse,里面有更新后的好友列表,之后就调用绑定了UI层刷新方法的事件,刷新UI。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值