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"));


【欢迎转载】

 转载请表明出处: 乐学习

原文地址:https://www.cnblogs.com/JLZT1223/p/6062613.html