搭建unity客户端

Posted fzxiaoyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建unity客户端相关的知识,希望对你有一定的参考价值。

1.新建个unity的项目ChatClient

 

2.在unityMain Camera下挂载个脚本PhotonServerEngine做为与服务器端通信的脚本

 

3.PhotonServerEngine脚本中添加引用Photon3Unity3D.dll

路径:C:\Program Files\Photon Server\lib

Photon3DotNet.dll   //普通的客户端程序

Photon3Unity3D.dll  //unity的客户端程序

 

4.PhotonServerEngine下编写具体的代码

 

using UnityEngine;

using System.Collections;

using ExitGames.Client.Photon;

using System;

using System.Collections.Generic;

//让当前类继承IPhotonPeerListener,用于接收服务器的信息

public class PhotonServerEngine : MonoBehaviour, IPhotonPeerListener

{

    private PhotonPeer peer;

    private bool bConnet = false;

 

    void Start()

    {

        //实例化一个PhotonPeer,把当前类当成接收对象,使用TCP协议

        peer = new PhotonPeer(this, ConnectionProtocol.Tcp);

        //连接本地服务器 IP127.0.0.1  TCP端口号:4530

        //通过PhotonServer.config文件,查找TCPListeners获取TCP端口号

        peer.Connect("127.0.0.1:4530", "ChatServer");

    }

    void Update()

    {

        //当每一帧时调用Service检查消息队列中的请求,并且发送请求

        peer.Service();

    }

    void OnGUI()

    {

        if (bConnet)

        {

            if (GUILayout.Button("Send Operation"))

            {

                //与服务器端进行通信,发起请求

                Dictionary<byte, object> dict = new Dictionary<byte, object>();

                dict.Add(1, "UserName");

                dict.Add(2, "UserPassWord");

                peer.OpCustom(1, dict, true);

            }

        }

    }

 

    //当返回调试信息时被调用

    public void DebugReturn(DebugLevel level, string message)

    {

 

    }

    //当有新消息事件时被调用

    public void OnEvent(EventData eventData)

    {

        

    }

  //当服务器端响应时被调用

  public void OnOperationResponse(OperationResponse operationResponse)

    {

        //接收服务器返回的数据

        object ob_1 = null;

        object ob_2 = null;

        operationResponse.Parameters.TryGetValue(1, out ob_1);

        operationResponse.Parameters.TryGetValue(2, out ob_2);

        Debug.Log("UserName = " + ob_1.ToString() +"|" +  "PassWord = " + ob_2.ToString());

    }

    //当状态改变时调用

    public void OnStatusChanged(StatusCode statusCode)

    {

        switch(statusCode)

        {

            case StatusCode.Connect:

                bConnet = true;

                Debug.Log("connect Succes");

                break;

        }

    }

}

5.必须保证Server应用己启动,未启动的话先运行PhotonControl.exe,选择default->start as appliaction, 如果正常显示蓝色图标,出现异常显示灰色图标.

6.最后运行unity, start方法被调用连接本地服务器端的TCP端口,点击GUI按钮,发起请求.

以上是关于搭建unity客户端的主要内容,如果未能解决你的问题,请参考以下文章

unity客户端基本框架(转载)

unity_小功能实现(客户端相互通信功能)

unity_小功能实现(客户端相互通信功能)

Unity3d 封装Socket创建简单网络

PhotonServer——实现客户端和服务器的通信(Unity实注册/登录)(上)

游戏开发实战用Go语言写一个服务器,实现与Unity客户端通信(Golang | Unity | Socket | 通信 | 教程 | 附工程源码)