[Unity3d]unity中http通信

前言

Unity3d 是一个跨平台的引擎,在移动互联网浪潮之中,尤其是移动游戏3d方向上,Unity3d 毫无疑问是最耀眼的明星。Unity3d的http通信很简单,也非常好用,下面通过http和php sever交互来简单介绍一下。

http 提交数据原理 

http 协议通过 url来获取和提交数据 。提交数据的方式 有两种,一种是get方法,一种是post方法。get一般用于告诉服务器把满足参数的数据发送给回来。

例如:get 的html代码如下:

[html] view
plain
copy

  1. <form action="search.php" method ="GET">  
  2.     <username:<inputtypeinputtype="text"name="user"/><br>  
  3.     <password:<inputtypeinputtype="password "name="pwd"/><br>  
  4.      <input type="submit"value="login"/>  
  5. </form >  

post一般是将数据发送给服务器,服务器将这些数据进行处理,比如说存储到数据库。

例如:post的html 代码如下:

[html] view
plain
copy

  1. <form action="login.php" method ="POST" >  
  2.     <username:<inputtypeinputtype="text"name="user"/><br>  
  3.     <password:<inputtypeinputtype="password "name="pwd"/><br>  
  4.      <input type="submit"value="login"/>  
  5. </form >  

     其实区别就是提交的方式不一样,点击login按钮后,浏览器地址栏里分别显示如下:

       get方法url为:http://127.0.0.1/serach.php?user=hortor&pwd=123

       post方法url为:http://127.0.0.1

PHP服务端接收数据方法

服务端针对这两种方式响应的有两种方式:

get方法接收数据的方法为 $_GET[user],来接收客户端发送的user的值。

post方法接收数据的方法为 $_POST[user]也是用来接收客户端变量user的值。

UNITY WWW类使用方法

unity www 类同样对应两种提交数据的方式,常用的两个构造函数为:

static function WWW (url : String) : WWW 

static function WWW (url : String, form : WWWForm) : WWW 

第一个函数是通过get方法向服务器发送数据,第二个是用post提交数据,其中WWWForm有个方法叫:AddField(agr : string, value : string),来添加参数。

get例子:

[javascript] view
plain
copy

  1. #pragma strict  
  2. privatevar url : String = "127.0.0.1/login.php?user=test&pwd=123";  
  3. function Start () {  
  4.      var getData : WWW = WWW(url);  
  5.      yield getData;       
  6.      if(getData.error != null) {  
  7.           Debug.Log(getData.error);  
  8.      }  
  9.      else {  
  10.           Debug.Log(getData.text);  
  11.      }  
  12. }  

post例子:

[javascript] view
plain
copy

  1. #pragma strict  
  2. privatevar url : String = "127.0.0.1/login.php";  
  3. function Start () {  
  4.      var form : WWWForm = new WWWForm();  
  5.      form.AddField("user", "test");  
  6.      form.AddField("pwd", "123");  
  7.      var getData : WWW = WWW(url, form);  
  8.      yield getData;  
  9.      if(getData.error != null) {  
  10.           Debug.Log(getData.error);  
  11.      }  
  12.      else {  
  13.           Debug.Log(getData.text);  
  14.      }  
  15. }  

其中yield 这个方法是程序每一帧调用一次,当getData 执行完成,返回结果,这就相当于是异步请求数据。WWW 类有几个常用的静态变量,分别为:

1、WWW.text  返回从网页得到数据,类型为string。

2、WWW.error 返回错误信息,比如说超时,网络连接错误等问题。

时间: 2024-09-16 01:15:42

[Unity3d]unity中http通信的相关文章

[Unity3d]unity与html通信

谈谈今天的学习收获,发现了一个好东西,unity与html能够相互通信,意味着我之前学的web开发还能在unity中用得上,哈哈,太happy了!下面简单谈谈通过Unity3D调用HTML网页的脚本函数,以及通过HTML网页调用Unity3D中的脚本函数. 1.1Unity3D浏览器调用HTML网页中的函数 Unity3D浏览器通过执行Application.ExternalCall()来调用任何在HTML网页里定义JavaScript函数,比如下面一句调用了HTML网页里SayHello()函

[unity3d]unity中C#委托的应用

C#中有一种还是挺实用的类型,就是委托类型,这也是初学者比较难理解的类型,我们常常将委托和事件合起来讲,其实他们两是有些区别的,委托(delegate)是一种类型,而事件(Event)是一种实例(委托中的一种).下面我就从参考网上的一个例子,讲解一下unity中C#委托的应用. 我们新建一个脚本,取名TestDelegate.这个主要的功能就是点击中文按钮输出中文名字,点击英文按钮输出英文名字.这里有两个函数分别实现了这两个功能.如果不用委托,可以用if else,switch来实现,相比新手用

[unity3d]unity中打包成.unity3d格式并实现本地加载出来

1.首先我们把这段代码拷贝下来,放进工程,不要托给任何物体,就放在那不要理它. using UnityEngine; using UnityEditor; public class ExportAssetBundles { [MenuItem("Export/Build AssetBundle From Selection - Track dependencies")] static void ExportResource () { // Bring up save panel str

C#使用Protocol Buffer(ProtoBuf)进行Unity中的Socket通信_C#教程

首先来说一下本文中例子所要实现的功能: 基于ProtoBuf序列化对象 使用Socket实现时时通信 数据包的编码和解码 下面来看具体的步骤: 一.Unity中使用ProtoBuf 导入DLL到Unity中, 创建网络传输的模型类: using System; using ProtoBuf; //添加特性,表示可以被ProtoBuf工具序列化 [ProtoContract] public class NetModel { //添加特性,表示该字段可以被序列化,1可以理解为下标 [ProtoMem

unity + mfc socket通信问题

问题描述 unity + mfc socket通信问题 新手小白.. 用MFC串口通信写了一个读取GPS仪器数据的程序,想用读取的GPS数据作为位置数据控制unity中物体的运动.Unity与C++之间进行socket通信 按照这篇文章做了一遍,总是提示"服务器连接失败".... 求大神相助!!!! 解决方案 HiSocket---unity中实现socket通信Unity&Socket使用TCP通信学记一

[Unity3D]Unity+Android交互教程——让手机&quot;动&quot;起来

想要用Unity实现一个二维码扫描的功能,然后网上找插件,找到一个貌似叫EasyCodeScanner,但下载下来用用,真不好使,一导入运行就报错,调好错了再运行发现点按钮没反应,反复试了几遍发现还是没反应,没办法看源码,结果发现只实现了IOS部分,没有Android部分,我屮艸芔茻...,神伤!用IOS真机测试吧,还是有问题,果断放弃了,下定决心自己动手丰衣足食,虽然不了解Android,但没有学不起来的,只要想,就没有实现不了的!!!首先还是得学习一下Android和Unity的简单交互,在

《Unity开发实战》——1.6节了解Unity中的Content

1.6 了解Unity中的Content当第一次打开Unity时,可能以为代码什么的都要从头开始写.然而Unity自带了几个叫做Package(包)的内容集合,在实现一些必需的通用功能时可以节省时间. 1.6.1 操作步骤一起来看一下Unity的标准包里都有什么:1)在Unity 编辑器中,访问Asset(资源)菜单.2)展开 Import Package(导入包)的子菜单.3)可以看到一个Unity中可用包的列表,这些都是随时可用的内容.1.6.2 实现原理Unity实现了一些常用的功能,并且

在Unity中捕捉Android的常用按钮返回事件_Android

在Unity开发中捕捉Android的常用事件其实很简单 Input.GetKey(KeyCode.Escape) Input.GetKeyDown(KeyCode.Home) // 返回键 if ( Application.platform == RuntimePlatform.Android &&(Input.GetKeyDown(KeyCode.Escape))) { //.... } // Home键 if ( Application.platform == RuntimePlat

unity中的音乐在ios上不能循环播放

问题描述 unity中的音乐在ios上不能循环播放 RT播放完一边后本来是应该继续播第二遍的结果在ios上就卡在那里了在winodows上没问题在Mac机上有问题请问这是什么原因?