学习搭建网站,怎么给一个网站做seo,企业信息公示怎么弄,公司网站制作应该注意些什么文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)
前情提要 单例泛型类 using System.Collections;
using System.Collections.Generic;
… 文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)
前情提要 单例泛型类 using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MyrSingletonBaseT : MonoBehaviour where T : MonoBehaviour
{private static T instance;public static T Instance {get{return instance;}}protected virtual void Awake() {instance this as T;}protected virtual void OnDestroy() {instance null;}
} ManagerBase using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;public abstract class ManagerBase : MyrSingletonBaseManagerBase
{public ListMoonBase Monos new ListMoonBase();public void Register(MoonBase mono){if (!Monos.Contains(mono)){Monos.Add(mono);}}public virtual void ReceiveMessage(Message message){if (message.Type ! GetMessageType()){return;} foreach (var mono in Monos){mono.ReceiveMessage(message);}}public abstract byte GetMessageType();
} 消息中心 using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;public class MessageCenter : MyrSingletonBaseMessageCenter
{public static ListManagerBase Managers new ListManagerBase();public void Register(ManagerBase manager){if (!Managers.Contains(manager)){Managers.Add(manager);}}public void SendCustomMessage(Message message){foreach(var manager in Managers){manager.ReceiveMessage(message);}}public static void SendMessage(Message message){foreach(var manager in Managers){manager.ReceiveMessage(message);}}
} manager下的组件基础 using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;public class MoonBase : MonoBehaviour
{public virtual void ReceiveMessage(Message message){}
} uiManager(绑在canvas上) using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;public class UiManager : ManagerBase
{void Start(){MessageCenter.Instance.Register(this);}public override byte GetMessageType(){return MessageType.Type_UI;}} PhotonManager using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ExitGames.Client.Photon;
using Net;public class PhotonManager : MyrSingletonBasePhotonManager, IPhotonPeerListener
{private PhotonPeer peer;void Awake() {base.Awake();DontDestroyOnLoad(this);}// Start is called before the first frame updatevoid Start(){peer new PhotonPeer(this, ConnectionProtocol.Tcp);peer.Connect(127.0.0.1:4530, PhotonServerFirst);}void Update(){peer.Service();}private void OnDestroy() {base.OnDestroy();//断开连接peer.Disconnect(); }public void DebugReturn(DebugLevel level, string message){}/// summary/// 接收服务器事件/// /summary/// param nameeventData/parampublic void OnEvent(EventData eventData){//拆包Message msg new Message();msg.Type (byte)eventData.Parameters[0];msg.Command (int)eventData. Parameters[1];Listobject list new Listobject();for (byte i 2; i eventData.Parameters.Count; i){list.Add(eventData.Parameters[i]);}msg.Content list.ToArray();MessageCenter.SendMessage(msg);}/// summary/// 接收服务器响应/// /summary/// param nameoperationResponse/parampublic void OnOperationResponse(OperationResponse operationResponse){if (operationResponse.OperationCode 1){Debug.Log(operationResponse.Parameters[1]);}}/// summary/// 状态改变/// /summary/// param namestatusCode/parampublic void OnStatusChanged(StatusCode statusCode){Debug.Log(statusCode);}/// summary/// 发送消息/// /summarypublic void Send(byte type, int command, params object[] objs){Dictionarybyte, object dic new Dictionarybyte,object();dic.Add(0,type);dic.Add(1,command);byte i 2;foreach (object o in objs){dic.Add(i, o);}peer.OpCustom(0, dic, true);}}
客户端部分 搭个页面 panel上挂上脚本 using System.Collections;
using System.Collections.Generic;
using Net;
using UnityEngine;
using UnityEngine.UI;public class LoginPanel : MoonBase
{//账号和密码输入框public InputField AccountField;public InputField PasswordField;// Start is called before the first frame updatevoid Start(){UiManager.Instance.Register(this);}// Update is called once per framevoid Update(){}public override void ReceiveMessage(Message message){//判断是否是自己该传递的消息base.ReceiveMessage(message);//判断消息命令switch (message.Command){case MessageType.Account_Register_Res:Debug.Log(注册成功);break;case MessageType.Account_Login_res:Destroy(gameObject);break;}}//注册public void Register(){PhotonManager.Instance.Send(MessageType.Type_Account, MessageType.Account_Register, AccountField.text, PasswordField.text);}//登录public void Login() {PhotonManager.Instance.Send(MessageType.Type_Account, MessageType.Account_Login, AccountField.text, PasswordField.text);}
} 绑定对象绑定事件