Unity3D与网页数据交互的基本原理

介绍:

1.Unity3D是一个3D游戏引擎由于和编辑器集成在一起所以也可以理解为一个制作/开发平台。

2.Unity3D使用javascriptC#作为核心脚本语言 来驱动整个游戏引擎。

3.平台可以发布为Exe执行文件或者打包为供网页调用的一个独立的包文件。

4.Unity3D制作的工程具有高度的可移植性 可以在ps xbox360 android iphone mac 等系统上运行。

 嵌入网页

1.实现和Flash插入网页原理完全一致 使用ActiveX控件 嵌入在网页中 所以和Flash一样 需要安装一个播放器插件(<=3M)。

2.如果察看页面源代码 则可以看到如下嵌入部分:

<object id="UnityObject"classid="clsid:444785F1-DE89-4295-863A-D46C3A781394"width="600"height="450"codebase="http://webplayer.unity3d.com/download_webplayer/UnityWebPlayer.cab#version=2,0,0,0">

<paramname="src" value="MyDataFile.unity3d" /><embedid="UnityEmbed" src="MyDataFile.unity3d"width="600"height="450"type="application/vnd.unity"pluginspage="http://www.unity3d.com/unity-web-player-2.x"/></object>

3.和Flash一样 在浏览器中加载3d场景或者读取时的图标进度条等都能进行自定义也可以自定义是否激活是用右键菜单。

  数据交互

1.在Unity3D中调用网页js函数。

如我们在html中有脚本函数:

则在u3d中我们可以写函数来调用js函数如:

[pre]Application.ExternalCall( "SayHello", "The game says hello!" );[/pre]

2.在unity3d中直接执行一段脚本代码(这也是可行的) 如:

[pre]Application.ExternalEval([/pre][pre] "if(document.location.host != 'unity3d.com') { document.location='http://unity3d.com'; }"

绿色部分是一个字符串 也是一段js脚本在u3d可以直接执行一段js脚本。

3.在js中调用unity3d函数(传递消息等)。

假如在u3d中有一段功能函数(也是用js写的)。

function MyFunction(param : String
{
Debug.Log(param);
}

则如果需要在js中呼叫这个函数可以这样写:

<script type="text/javascript" language="javascript">
< !--function SaySomethingToUnity(
document.getElementById("UnityContent").SendMessage("MyObject", "MyFunction", "Hello from a web page!");
-->
< /script>

唯一要注意的是MyObject代表Unity3D中的一个物体名称为MyObject ,MyFunction是赋予给这个问题的函数,最后一个字符为传递的参数。如此可以实现调用和数据传递。

与php,jsp?等的表单数据交互

这应该是今后会可能用到的主要方式 原理是利用form表单传递数据 php中已经使用过多次 没有问题 jsp中应该同理

以php为例

U3d可以用向某个指定页面发送表单数据然后在php中使用_POST获取传递过来的表单数据

比如我们有一个网页: www.dreamloader.net/index.php<http://www.dreamloader.net/index.php>

其页面源文件如下:

<?php
$action=$_POST["myform_action"];//
定义一个变量$action用来获取页面传递过来的表单数据
if ($action!=
””){echo$action;}//如果接受到了数据则打印出数据内容
?>

在Unity3D中我们发送数据的代码如下:

varform = newWWWForm();//定义一个网页表单form.AddField( "myform_action", "Action1" );//添加一个表单字段名称为myform_action内容是Action1
vardownload = newWWW( 
“www.dreamloader.net/index.php”, form );//发送表单数据到指定网址页面

假如index.php中执行的是数据库/统计操作 我们就可以对传递的数据进行保存读取或者其他操作了。

介绍一下UNITY3D与WEB交互的方法,包含传入和传出。

通过web,url传入数值的方法:

var version : int = 1;

function CheckVersion ()
{
var update_url = "http://mysite.com/myGame/version.txt";
update_post = WWW(update_url);
yield update_post; //
等待数据传递
if(update_post.error)
{
print("URL
输入错误: " + update_post.error);
}
else
{
var latestVersion : int;
//
取得传入的值
latestVersion = int.Parse(update_post.data);
if (latestVersion > version)
{
//
你的代码写在下面
}
}
}

Unity3D输出数据的方式如下,采用Application.ExternalCall,该方法只适合在web3d环境下使用。

该方法支持基本类型的传递和数组传递,任何类型都会转换成字符串类型使用。

例子代码:

//不待参数的调用函数 MyFunction1 
Application.ExternalCall ("MyFunction1");

//调用函数MyFunction2,传递一个字符串
Application.ExternalCall ("MyFunction2", "Hello from Unity!");

//调用函数MyFunction3,传递混合参数
Application.ExternalCall ("MyFunction3", "one", 2, 3.0);

web中使用的函数,接受参数的能力。

<script language="JavaScript" type="text/javascript">
< !--
// arg
是接受unity3d传递来的参数值
// web
会弹出一个对话框来显示传入的参数值
function MyFunction2( arg )
{
alert( arg );
}

-->

</script>

 

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值