Unity3D和網頁數據交互的基本原理


簡介:

1、Unity3D的游戲引擎是和編輯器集成在一起的,所有它也是一個制作/開發平台。

2、Unity3D是使用JavaScript、C#作為核心腳本語言來驅動事個游戲引擎。

3、平台可以發布Exe執行文件或者打包為可供網頁調用的一個獨立的包文件。

4、用Unity3D制作的工程具有高度的可移植性,可以在PS xbox360 Android iPhone mac等系統上運行。

嵌入網頁:

1、用Unity3D實現嵌入網頁和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中我們可用使用Application.ExternalCall調用js函數,該方法只適合在Web3D環境下使用。該方法支持基本類型的傳遞和數組傳遞,任何類型都會轉換成字符串類型使用。

例子代碼:

Application.ExternalCall("SayHello","The game says hello!);//調用SayHello,傳遞一個字符串

 

2、在Unity3D中直接執行一段腳本代碼如:

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

 

3、在js中調用Unity3D函數(傳遞消息等)

如果有Unity3D中有一段用JS寫的功能函數:

function MyFunction(param:String)

{

         Debug.Log(param);

}

需要在JS中呼叫這個函數則可以這樣寫:

<script type="text/javascript" language="javascript">

SaySomethingToUnity(document.getElementById("UnityContent").SendMessage("MyObject","MyFunction","Hello fom a web page!"););

</script>

這里要注意的是MyObject代表Unity3D中的一個場景名稱為MyObject,MyFunction是調用的函數,最后一個字符為傳遞的參數。

 

與php,jsp等的表單數據交互

         與php,jsp等的表單數據交互很可能會是今后用到的主要方式,原理是利用form表彰傳遞數據,下面以php為例來進行說明。

         Unity3D可以實現向某個指定頁面發送表單數據然后在php中使用_POST獲取傳遞回來的表彰數據。比如:

<?php

         $action = $_POST["myform_action"];//定義一個變量$action用來獲取頁面傳遞過來的表單數據

         if($action!=""){

                  echo $action;//如果接收到了數據則打印出數據內容

         }

?>

在Unity3D中我們發送數據的代碼如下:

var form = new WWWForm();//定義一個網頁表單

form.AddField("myform_action","Action1");//添加一個表彰字段名稱為myform_action內容是action1

var download = new WWW("www.xxx.com/index.php",form);//發送表單數據到指定網址頁面

假如index.php執行的是數據庫/統計操作,我們就可以對傳遞的數據進行保存讀取或者其他操作了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM