查看: 1499|回复: 4
打印 上一主题 下一主题

unity3d和网页数据交互的基本原理

[复制链接]

5552

主题

2

听众

8万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
11

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-4-6 11:03:14 |只看该作者 |倒序浏览
介绍:

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

2. u3d使用javascript C#作为核心脚本语言 来驱动整个游戏引擎

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

4. u3d制作的工程具有高度的可移植性 可以在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">

<param name="src" value="MyDataFile.unity3d" /><embed id="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代表u3d中的一个物体名称为MyObject ,MyFunction是赋予给这个问题的函数,最后一个字符为传递的参数。如此可以实现调用和数据传递。


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

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

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

比如我们有一个网页: 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中执行的是数据库/统计操作 我们就可以对传递的数据进行保存读取或者其他操作了
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

103

主题

1

听众

7956

积分

高级设计师

Rank: 6Rank: 6

纳金币
7953
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2012-4-6 19:29:44 |只看该作者
回复

使用道具 举报

205

主题

1

听众

5624

积分

高级设计师

Rank: 6Rank: 6

纳金币
5622
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2012-4-6 19:39:23 |只看该作者
爱生活,爱纳金网,爱web3D。。。。
回复

使用道具 举报

1010

主题

1

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
31646
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-4-6 19:58:20 |只看该作者
爱生活,爱纳金网,爱web3D。。。。
回复

使用道具 举报

315

主题

0

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
10878
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-4-6 20:48:53 |只看该作者
不错!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-5 21:10 , Processed in 0.088683 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部