Unity中使用WCF服务小教程

简单的介绍一下Unity 如何使用wcf ,首先打开VS ,新建一个项目。

图片:P1.jpg


填好项目名称和路径之后,点击确定,创建一个WCF 服务应用程序。

图片:p2.jpg



VS 自动生成几个文件。主要是一些模版,用户可以参考给出的模版去写自己的服务。双击打开可以看到里面的代码,还有注释信息。




参考他的IService.cs,新建一个文件
IMyService.cs

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
using System;
using System.Collections;
using System.ServiceModel;
[ServiceContract]
public interface IMyService
{
[OperationContract]
int Add(int n1, int n2);
[OperationContract]
int Substract(int n1, int n2);
}
[ServiceContract]表示这是一个服务契约。在这个文件里,我们写了一个接口IMyService,接口里定义了一个加法运算和一个减法运算的操作契约。


新建一个文件

MyService.cs

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections;
using System.ServiceModel;
public class MyService : IMyService
{
public int Add(int n1, int n2)
{
return n1+n2;
}
public int Subtract(int n1, int n2)
{
return n1 - n2;
}
}
这个文件, 实现 IMyService接口的方法。

新建一个文件,名称后缀改为.svc.
MyService.svc

复制代码
1
<%@ServiceHost language="C#" Service="MyService"%>
在这里,给出把服务宿主所用的语言,和服务的名字。


图片:p3.jpg


参照VS给 我们生成的文件,写了一个名为MyService的服务,服务里面有2个操作,加法和减法运算。

图片:p4.jpg



右键MyService.svc,点击在浏览器中查看。

图片:p5.jpg



这样,就表明服务已经成功创建。页面不用关闭。
页面给出提示:
若要测试此服务,需要创建一个客户端,并将其用于调用该服务。可以使用下列语法,从命令行中使用 svcutil.exe 工具来进行此操作:
svcutil.exe http://localhost:52409/MyService.svc?wsdl

接下来,我们就开始在Unity中使用上面创建好的WCF服务。
在Unity路径/Editor/Data/Mono/lib/mono/2.0 :下找到
System.Runtime.Serialization.dll
System.ServiceModel.dll
这2个DLL文件,放在Plugins文件夹下

图片:p6.jpg



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

图片:p12.jpg

图片:p13.jpg







接下来我们就像打开服务的那个提示所说的,
在 C:\Program Files\Mono-2.10.8\bin\
x64: C:\Program Files (x86)\Mono-2.10.8\bin\
下找到svcutil.bat(当然,你可以把这个文件搬到其他路径下)

打开命令行程序:跳转到svcutil.bat所在 目录下:
在该目录下执行下面的代码:

复制代码
1
svcutil -out:MyServiceClient.cs http://localhost:52409/MyService.svc?wsdl
意思就是从这个服务输出客户端的代码( MyServiceClient.cs文件 ),最后那个地址参数成功创建服务时的页面有给出。

图片:p8.jpg

图片:p9.jpg



这就成功把服务的代码输出到本地。


svcutil.bat所在 目录下,你会找到 MyServiceClient.cs文件,把该文件放进Unity的工程里。
这个文件就作于Unity与WCF服务的桥梁。
然后我们在Unity新建一个C#脚本文件,对这个服务进行测试

Test.cs



复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using UnityEngine;
using System;
using System.Collections;
using System.ServiceModel;
public class Test : MonoBehaviour
{
void Start()
{
MyServiceClient client = new MyServiceClient(new BasicHttpBinding(), new EndpointAddress("http://localhost:52409/MyService.svc"));
int n = client.Add(1,2);
Debug.Log(n);
}
}



在Unity中创建一个空的物体,命名为WebClient(这无所谓,你自己喜欢),然后把
Test.cs这个脚本拖拽到这个物体上,点击运行测试一下:

图片:p10.jpg


查看一下,输出的结果,结果是正确的。这就代表你成功了。

图片:p11.jpg




MyServiceClient类就是我们刚才从服务里导出的代码,在Unity里,先创建这个类的对象,这个类的构造函数有多个重载形式,大家可以按需要,网上查阅,找到适合自己用的那个构造方法。
MyServiceClient类的对象,去调用wcf里的方法,Add(1,2);最后通过Debug.Log(n);把结果打印到控制台。

这就实现了调用WCF方法去完成一个简单的加法运算。当然,WCF不局限只做一些这么多此一举的运算,你可以将所有你需要的,或者你想做的操作,写成一个服务,挂到服务器上,然后让Unity去调用WCF服务,实现你的功能。


转载自 http://game.ceeger.com/forum/read.php?tid=3674&fid=2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值