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 Files\Unity\Editor\Data\Mono\lib\mono\2.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 Files\Unity\Editor\Data\Mono\lib\mono\2.0\
svcutil -out:UnityServiceClient.cs http://localhost:54435/UnityService.svc?wsdl
pause

保存后,以管理员身份运行,即可在C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.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"));
【欢迎转载】
转载请表明出处: 乐学习
Unity3D连接WCF的更多相关文章
- Unity3d连接SQL Server数据库出现SocketException: 使用了与请求的协议不兼容的地址错误
这两天,同学问我Unity3d连接SQL Server的问题,当时我只是简单的说:“应该一样吧,就是那简单的几句啊”.之后他让我试了下,我才发现有问题了.故此写下一篇博客,要牢记这件事的教训,操作数据 ...
- WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转)
WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转) Windows Communication Foundation (WCF)是Microsoft为构建面向服务的应用提供的分布式通信 ...
- 在Unity3D中连接WCF服务端
服务端不多讲解,有一处需要改的地方.具体服务端请看WCF入门学习2-控制台做为宿主 建议实际项目不要拿去用,毕竟是mono不是原生.net.或许是个坑 由于Unity的mono版本问题不能直接用net ...
- Unity3D连接sqlite数据库操作C#版
unity3d有自己对应的sqlite.dll分别需要三个文件 1.Mono.Data.Sqlite.dll 在unity安装文件“Unity\Editor\Data\MonoBleedingEdge ...
- Unity3D连接本地或局域网MySQL数据库
准备工作: 1.打开 Unity3D 安装目录,到这个路径下 Editor > Data > Mono > lib > mono > 2.0 拷贝出下图的五个动态链接库, ...
- unity3d连接Sqlite并打包发布Android
连接Sqlite首先要把dll程序集导入到unity3d工程里面.安装好的unity中可以找到
- (转载)Unity3D连接本地或局域网MySQL数据库
准备工作: 1.打开 Unity3D 安装目录,到这个路径下 Editor > Data > Mono > lib > mono > 2.0 拷贝出下图的五个动态链接库, ...
- CentOS7 mono环境连接WCF
总结下在mono环境中使用Wcf出现的问题以帮助你快速解决问题. 1.昨天在内网Centos7下部署由Windows上开发完成的ASP.NET Mvc4项目,部署到mono环境下遇到了无法找到endp ...
- Unity3D连接真机调试教程,可抓断点
源地址:http://www.unity蛮牛.com/thread-19586-1-1.html <ignore_js_op> 未标题-1.jpg (52.33 KB, 下载次数: 0) ...
随机推荐
- windows upd广播包无法发送到局域网解决方法
不能发送广播包的电脑和可以发送广播报的主机对比,发现不能发送广播报的主机上都有安装虚拟机,也有虚拟网卡,将所有的虚拟网卡关闭,然后再进行测试,都正常了,无论是Win7,Win10还是Xp. 禁用VMw ...
- 51系列xdata、idata、data的用法
从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的 ...
- 推荐android布局百分比框架
githup:https://github.com/JulienGenoud/android-percent-support-lib-sample 下面是使用方法: Android Percent S ...
- ListView中加载大量的图片
情况是这样的:我需要把大约四五十个车标在一个listView中展示出来,一般在用ListView的时候撑死十来个图标,按不同分类使用,这倒好办,在创建view的时候使用R.drawable.xxx指定 ...
- window下安装php7的memcache扩展
安装memcache:http://www.runoob.com/memcached/memcached-connection.html1.4.4 c:\memcached\memcached.exe ...
- Linux 安装OpenSSL出错的解决方法
以前编译php没有 –with–openssl 现在要使用到 openssl ,phpinze扩展安装,但是在make时候报错 今天找这个在网上找了大半天,最后总结应该是php版本本身的问题,错误是p ...
- MapReduce Input Split(输入分/切片)具体解释
看了非常多博客.感觉没有一个说的非常清楚,所以我来整理一下. 先看一下这个图 输入分片(Input Split):在进行map计算之前,mapreduce会依据输入文件计算输入分片(input spl ...
- Java 学习 day08
01-面向对象(多态-概念) package myFirstCode; /* 多态:可以理解为事务存在的多种体现形态. 人:男人,女人 动物:猫,狗 猫 x = new 猫(); 动物 x = new ...
- 宇视摄像机/NVR OCX插件插件安装出现:Failed to register ocx, error code 14001 错误的解决方法
最近在使用EasyNVR接入海康.宇视的摄像机进行景观直播的项目时,需要进入宇视设备进行音视频编码参数的调整,要说呢,海康的产品好就是要好很多: 海康的设备后台管理页面,不需要装插件也能进去,而且能调 ...
- Effective Java 读书笔记(一):使用静态工厂方法代替构造器
这是Effective Java第2章提出的第一条建议: 考虑用静态工厂方法代替构造器 此处的静态工厂方法并不是设计模式,主要指static修饰的静态方法,关于static的说明可以参考之前的博文&l ...