unity3D与网页的交互

由于项目需要,要求用unity来展示三维场景,并在三维中能够方便的查询数据库等。一开始尝试在unity中直接连接数据库,当时连的xml,然而每次发布成网页后都会出现路径找不到等问题,所以迫不得已采用了unity向网页传送数据,网页中处理数据(查询数据库),然后将处理过的数据再反传送给unity,最终在unity中将其展示(在网页中展示更为灵活)。

原理很简单:

1、unity向网页发送数据的函数:Application.ExternalCall("SayHello",gameObject.name),这个函数将调用网页中的SayHello函数,gameObject.name为传递的参数。

2、网页向unity发送数据的函数:网页中用GetUnity().SendMessage(message, "AcceptName",buildingname)函数来调用unity中的函数,此函数的参数message为unity中的物体,AcceptName为物体上的函数,buildingname为传递的参数。

网页中的函数如下:

 1functionSayHello(message){//此函数来接收unity中发送出来的message值,并将处理后的数据再发送回unity中
 2jQuery.post('../Unity/javascript/DBhelper.ashx',{id:message},
function(data)
 3        {
 4varmsg=JSON.parse(data);//将json数据解析
 5varbuildingname = msg[0].Building_name;
 6varbuildingcategory=msg[0].Building_category;
 7varbuildingpic = msg[0].Building_pic;
 8GetUnity().SendMessage(message, "AcceptName",buildingname);//向unity中的message物体上的MyFunction函数发送buildingname值
 9GetUnity().SendMessage(message,"AcceptCategory", buildingcategory);
10
11GetUnity().SendMessage(message,"AcceptImg", buildingpic);
12       });   
13}

此函数将unity中发送的数据message传到DBhelper.ashx中,在DBhelper.ashx中将传递过来的数据进行查询等操作,然后再用GetUnity().SendMessage(message,"AcceptName", buildingname)将处理好的数据buildingname传给unity中的AcceptName函数。

以下是unity中的脚本,可以实现中文,关于中文的实现由于文章有限,在此不再说明,只说明怎样接收网页中的数据。

 1varchineseSkin : GUISkin;//在此可以选择字体,并设置为中文。建议编辑器设为uft-8。
 2
 3varbuildingname:String;//用来接收从网页中传递过来的buildingname值
 4varbuildingcategory:String;//用来接收从网页中传递过来的buildingcategory值
 5
 6var buildingpic:Texture2D;//用来接收从网页中传递过来的buildingpic值
 7var windowRect0 = Rect (20, 20, 250, 200);
 8varenable:boolean;
 9function Awake(){
10enable = false ;
11}

//鼠标按下去时触发的事件
12functionOnMouseDown () {
13Application.ExternalCall("SayHello",gameObject.name);//
向网页中的SayHello函数发送gameObject.name数据
14enable = true;
15}
16functionAcceptName(bdname){//用于接收网页中发送回来的数据
17buildingname=bdname;
18}
19functionAcceptCategory(buildingType){//用于接收网页中发送回来的数据
20buildingcategory=buildingType;
21}
22
23functionAcceptImg(img){

//读取文件夹下的图片文件
24var www :WWW =
newWWW("http://localhost:1166/Unity/images/"+img+"");
25yield www;

//为buildingpic设置纹理
26buildingpic=www.texture;
27}

//绘制GUI元素时触发的事件
28functionOnGUI(){
29GUI.skin=chineseSkin;
30if(enable)
31{

//绘制一个窗体,记住第三个参数是方法名字
32windowRect0 = GUI.Window (0, windowRect0,DoMyWindow, "属性");
33}
34}

//绘制一个窗体,windID是不可缺少的元素,指向窗体的索引值
35functionDoMyWindow (windowID :
int) {
36GUI.Label(Rect(10,50,80,30),"建筑物名字");
37GUI.TextField(Rect(100,50,100,30),buildingname);
38GUI.Label(Rect(10,100,80,30),"建筑物类型");
39GUI.TextField(Rect(100,100,100,30),buildingcategory);
40
41GUI.DrawTexture(Rect(10,150,200,50),buildingpic,ScaleMode.ScaleToFit,true,0);
42if(GUI.Button(Rect(190,20,50,30),"退出")){
43enable = false;
44}
45GUI.DragWindow (Rect (0,0,10000,10000));
46}

//鼠标在上面时触发
47functionOnMouseOver(){
48transform.Rotate(0,Time.deltaTime*100,0,Space.World);
49}

//鼠标进入时触发
50functionOnMouseEnter(){
51renderer.material.color = Color.blue;
52}

//鼠标离开时触发
53functionOnMouseExit(){
54renderer.material.color =Color.yellow;   
55}

这是unity中的脚本,此脚本实现点击物体,弹出物体的属性。

时间: 2024-09-27 02:45:00

unity3D与网页的交互的相关文章

unity3D与网页的交互---做项目的一点总结

        由于项目需要,要求用unity来展示三维场景,并在三维中能够方便的查询数据库等.一开始尝试在unity中直接连接数据库,当时连的xml,然而每次发布成网页后都会出现路径找不到等问题,所以迫不得已采用了unity向网页传送数据,网页中处理数据(查询数据库),然后将处理过的数据再反传送给unity,最终在unity中将其展示(在网页中展示更为灵活). 原理很简单: 1.unity向网页发送数据的函数:Application.ExternalCall("SayHello",g

[unity3d]发布网页版Unity自适应网页大小

发布网页版,Unity3D自适应网页大小.这个问题困扰了我很长时间,今天终于把他解决了,给大家分享一下. 这里用Uinty4.0发布网页版,我去掉了里面的标题和下载连接地址的Div,目的是让代码看起来易懂. 自适应网页大小与发布网页时PlayerSettings设置的width和height大小无关,只要讲网页里面的标注的代码设置好,就可以实现u3d自适应网页大小. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

网页界面交互设计:系统的用户体验的衡量标准

文章描述:精益用户体验(UX):摆脱只注重结果的工作(留意互动机构的区别之处). By Jeff Gothelf from SmashingMagazine.com翻译&编辑:DamnDigital, (转载请说明翻译来源, 尊重我们的努力) 网页(以及交互设计,界面设计,等)传统上是基于可交付的形式来执行.框架.网站地图.流程图.内容清单.分类系统.原型和规范文档(又称"The Spec"),帮助定义网站在其起步阶段的执行.这些结果构成了一个系统的用户体验的衡量标准. 随着时

网页按钮交互设计:按钮的位置和分组

网页制作Webjx文章简介:网站交互设计中的按钮位置与分组. 按钮分组 按钮的分组可以让一个界面变得具有自我描述能力.在复杂的布局中,组织良好的各组按钮用以选择,而且因为很明显,这样可以很快告诉用户有哪些功能可以使用. 几个按钮放在一起,因为它们可能完成类似的功能.我们可以看范例iTunes的主窗口,四个角分别放置了一组按钮,界面中间的歌曲也有很多的行动点.加上滚动条,该界面只有有14个按钮.确实有很多的功能,不过因为视觉上和语言上的巧妙组合,并不会给用户很乱的感觉. 制定"阿里助手"

网页按钮交互设计中的确定和取消设计原则

     "确定"与"取消"按钮应该可以算是Web应用里最无敌的组合了,你可以随处看到他们以及他们的姊妹组合"完成"/"取消"."是"/"否"-.当然,他们也不是每次都表述的是同一个交互动作,但是我们总会遇到.           为什么会有"确定"与"取消"的组合?      这个问题似乎是个废话.因为,Web应用中几乎你所有的动作都是可以取消的

交互网页设计原则:整洁清晰明确

  在网页交互设计中,我们提出:信息获取和传达的过程必须是简洁清晰,自然易懂.这样用户才能够有效的获取这些信息,并迅速作出决定. 1.什么是"简洁自然,清晰易懂"? 简洁清晰:使信息最简化 "少即是多".提倡使用最少的元素来表达最多的信息.如果信息繁杂,将使用户承担大量的信息负担,造成信息过载,影响效率,不能帮助用户解决问题. 自然易懂:使用用户语言 用户获取信息的方式多样,并且对信息的理解程度也各有不同,所以使用用户平时使用和理解的表达方式去传递信息,更可以被用户

网页设计一致性:设计风格与品牌形象视觉和交互

文章描述:网页设计的目标是将网页和用户连结,通过设计(顺手的导航.流畅的交互)让用户对网站产生信任.尽管网页设计以功能性为主,但依然可以为用户提供优良的用户体验. 网页设计的要点之一便是一致性,设计师首先需要了解一致性,然后再致力于构建页面元素之间的联系.网页设计的目标是将网页和用户连结,通过设计(顺手的导航.流畅的交互)让用户对网站产生信任.尽管网页设计以功能性为主,但依然可以为用户提供优良的用户体验. 客户,用户以及一致性: 具备一致性特质的网页能够帮助推广品牌.清晰传递信息.客户在意的是设

网页交互设计中的模块标签

简介 这是一篇对于网页中交互设计运用的文章. 本文以翻译为主,由于俺英语水平有限,有些专业名词也不甚明了,所以有些东西都是俺凭着对此效果的理解,加入了自己的思想,如果有什么不对的地方望评点,先谢谢. 如果用户想要浏览一个或多个堆叠窗格的内容而不需要刷新页面应该怎么实现呢? 例如下面的例子: 首先我们应该考虑我们什么时候会使用模块标签呢? 当有多个窗格的内容,而每次只能显示一个窗格. 不同的窗格的内容不需要互相参照. 你可以通过改变窗格来切换网页内容. 为了浏览一个网站的不同网页,而使用导航标签代

VXPLO:网页交互设计的大升级

当鼠标点到视频中出现的金发女郎身上,她的裙子与包上会显示其价格及购买场所--这款产品可以形成诸如此类的各种网页设计交互效果.文 | 夏宏在以往,一位设计师如果要在自己设计的网页上添加交互设计会非常麻烦:大量的交互代码,多种设备,还需要自己的作品同时支持IE浏览器6/7/8版本,设计师与程序员之间需要耗费很高的沟通成本,并且,最终呈现出来的效果未必能完全实现设计师的构想.此前有人用Flash制作动画与交互设计,但它对HTML5的支持不够理想,且不支持智能手机.平板电脑,因此这种方式逐渐被淘汰;Go