zoukankan      html  css  js  c++  java
  • Warensoft Unity3D 通信库项目简介

    Warensoft Unity3D 通信库项目简介

    项目下载地址:http://wucl.codeplex.com

    该类库是专门为Unity3D编写的一个高性能通信库,其中包括了若干十分易于使用的Http通信类以及Socket通信类.另外最特别之处在于,它引入了一个全新的,基于Http协议的数据库访问组件,可以轻松访问MS SQL SERVER2005+. 

    Warensoft Unity3D通信库特点:

    1.符合微软命名规范

    作为一个C#开发人员,您会发现Unity3d中的命名规范与其他的C#例程中的命名规范大不相同,如字段公有化等.但是在该类库中,所有能够看到的内容(包括字段,属性,方法,事件)全部符合微软命名规范.

    2.基于HTTP协议的通信

    Unity3D,开发人员只能使用WWW类来处理Http的请求和响应,原有的在DotNet Framework中的WebRequest类和WebClient,Unity3D中是无法使用的.对于初学者来讲,WWW类的使用方法有点奇怪(当然,3D引擎中,你必须这样做), 事实上,WWW类的使用方式与微软的编程风格完全不同. 当然,最令人头疼的是当你释放WWW类所占用的内存资源时,会出现较为明显的内存泄漏, 另外,过多使用WWW类会产生多线程并发问题,当开发人员同时建立多个WWW类的实例来并发访问多个Web资源时,经常会出现Too Many Threads(线程太多)的异常,然后整个系统就崩溃了.

    Warensoft Unity3D通信库为您引入了一个全新代替方案:UnityHttpClient.使用UnityHttpClient类发送Http请求以及获取响应将变的极为简单,另外,该类在自动在后台控制并发的线程数量.请对比以下两段代码,第一段是使用WWW类实现的,第二段代码是使用HttpClient类来实现的.

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ///With WWW Class

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

       

    public class WWWTest:MonoBehaviour

    {

        WWW www;

        void Start()

        {}

        private int initStep=0;

        void Update()

        {

            switch (this.initStep) {

            case 0:

                this.www=new WWW ("http://www.abc.com/default.aspx");

                this.initStep=1;

                break;

            case 1:

                if (this.WWW.isDone)//waite until the http response is finished

                {

                    print(this.www.text);

                }

                break;

            default:

            break;

            }

        }

    }

     

       

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    //With HttpClient class

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

       

    public class HttpClientTest:MonoBehaviour

    {

        HttpClient client;

    void Start(){}

        private int initStep=0;

        void Update()

        {

    if(this.initStep==0)

    {

            //create an instance

             this.client=UnityCommunicationManager.CreateInstance().GetHttpClient();

            this.client.BeginGetHttpContent("http://www.abc.com/default.aspx",new Action<string>((result)=>

            {

                print(result);

            }));

            this.initStep=1;

    }

        }

    }

    正像你看到的一个,使用HttpClient类是如此的简单!

    3.基于TCP协议的通信

    使用Http方式进行远程通信,固然可以解决绝大多数问题,但是有些时候你可能需要更快的通信,并且需要服务器可以将实时数据直接推送到客户端(不需要客户端定时查询).例如,在同一个场景中可能有很多人物在走动,这些人物不是NPC,而且它们都是由计算机前面的人来控制的.因此,你需要一个更快速的方法去同步这些人模的坐标信息.

    最有效的解决方法就是基于TCP协议之上制定一系列的自定义协议.但不幸的是,关于Unity3D内置的network view 组件,官方并没有提供太多的,易于阅读和理解的文档.或者,你可以使用.NET Framework中的Socket类取而代之.Socket类可以说是一个万能的通信类,没有它搞不定的,但同时Socket类也是最低层的一个类,并且十分难以控制.

    Warensoft Unity 通信库引入了一个用于替代的SocketClient,一个使用简单,控制极为容易的类.

    4.通过Warensoft数据访问服务访问MS SQL SERVER2005+数据库

    出于安全角度考虑,Unity3DWebPlayer,是不可以访问MS SQL SERVER(ADO.NET不可用).SilverlightFlash一样,通常情况下富客户端应用一般都是不能访问数据库的(这是一点是默认的安全策略).WebPlayer的环境下,最佳的实践方式就是使用代理模式(Proxy Pattern),或者干脆就在Web服务器上提供一个简单的Web服务接口(可以基于HTTP方式的服务,也可以是一个SOAPWeb服务等).

    为此,我们为您提供了一个名为Warensoft数据服务的代理数据访问技术,并且在Warensoft Unity 通信库中提供了一组客户端代理类,仅仅需要几步,您就可以轻松的实现SQL SERVER数据库访问

  • 相关阅读:
    记忆化搜索——luogu滑雪
    如何解决mysql stop fail的问题
    顶级工程师谈机遇、谈跳槽、谈选择
    向周鸿祎学习产品和产品推销方法
    几个概念:x86、x86-64和IA-32、IA-64
    split函数的实现
    谈谈c++中继承中的虚函数
    c++ 编译期与运行期
    读<<大数据时代>>的一些感想
    size_t与size_type的使用
  • 原文地址:https://www.cnblogs.com/warensoft/p/Unity3D.html
Copyright © 2011-2022 走看看