zoukankan      html  css  js  c++  java
  • Unity3D连接WCF

    Unity3D连接WCF:


    一、最简单的案例

    1、VS2015中:

    1)建立WCF应用服务程序ForUnity;

    2)将自动生成的IService1.cs与Service1.svc删除;

     

    3)添加一个WCF Service,命名为UnityService:

     

    4)公布接口,实现接口功能;

     

    是两个实现加减的函数;

    (5)右键UnityService.svc,点击在浏览器中查看。

     

     6)生成下列显示页面:

     

    这样,就表明服务已经成功创建。页面不用关闭。

    VS2015的工作基本结束!


    2.Unity3D中:

       接下来,我们就开始在Unity中使用上面创建好的WCF服务。

      1)在unity3d中建立Plugins文件夹

     

     2)找到unity的安装路径:C:Program FilesUnityEditorDataMonolibmono2.0;将其中的

    System.Runtime.Serialization.dll

    System.ServiceModel.dll

    2个DLL文件,放在刚刚在unity中建立Plugins文件夹下

     

     

     注:

    添加这两个dll文件时,需要把Unity当前的API兼容等级设置为 .NET 2.0(Unity默认设置为.NET 2.0 Subset),否则会出现错误。

    Edit--->Project Setting--->Player)

     

      (3)生成UnityServiceClient.cs文件(暂时与unity以及VS2015无关):

       穿插一个小知识

    注:(.bat文件:

    bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。)

       新建一个记事本文件,重命名为12.bat

       在该文件下编辑以下命令:

     C:

     cd C:Program FilesUnityEditorDataMonolibmono2.0

    svcutil -out:UnityServiceClient.cs http://localhost:54435/UnityService.svc?wsdl

    pause

     

     保存后,以管理员身份运行,即可在C:Program FilesUnityEditorDataMonolibmono2.0中生成:UnityServiceClient.cs文件;

     

    好的!

    UnityServiceClient.cs文件就作于Unity与WCF服务的桥梁!

     4)接下来继续在unity3D中快乐的玩耍;

    将上述生成的UnityServiceClient.cs文件放在uniy工程中:

     

    unity中创建一个空游戏对象:

     

    创建一个c#脚本文件:

     

    该脚本文件内容如下(简单到极致):

    using UnityEngine;

    using System.ServiceModel;

    public class NewBehaviourScript : MonoBehaviour 

    {

        void Start()

        {

            UnityServiceClient client = new UnityServiceClient(new BasicHttpBinding(), new EndpointAddress(" http://localhost:54435/UnityService.svc"));

            int n = client.Add(1, 2);

            Debug.Log(n);

        }

    }

    将该脚本绑定在刚刚创建好的游戏对象之上,在控制台出可看到结果,如下图:

     

    通信完成!


    总结:

    1、VS2015:创建服务,并提供好终结点服务地址;

    2、由svcutil.exe生成从这个服务输出客户端的代码

    (即:svcutil -out:UnityServiceClient.cs http://localhost:54435/UnityService.svc?wsdl(该语句的含义就是:从这个服务(网址指向的服务)生成客户端代码,这里是UnityServiceClient.cs 文件))

    可以简单理解为服务端与客户端的桥接文件

    3、Unity3D:引入必要的类库文件以及桥接需要的.cs文件(服务端与客户端的桥接文件);创建终结点匹配;即可完成通信。

    注:创建终结点匹配(在unity的脚本中):

    UnityServiceClient client = new UnityServiceClient(new BasicHttpBinding(), new EndpointAddress(" http://localhost:54435/UnityService.svc"));


    【欢迎转载】

     转载请表明出处: 乐学习

  • 相关阅读:
    使用正向proxy 连调部署在k8s 中的spring cloud 中的rest服务
    goflow golang 的基于flow的编程库
    gvm golang 的多版本工具
    jvm-profiler 学习试用
    httpdiff http 请求diff 工具
    tengine lua 模块docker 镜像集成
    tengine 支持dubbo 的docker镜像
    openresty ngx.location.capture http2 问题
    systemd 使用rc.local 说明
    revel golang的全栈开发框架
  • 原文地址:https://www.cnblogs.com/JLZT1223/p/6062613.html
Copyright © 2011-2022 走看看