『壹』 如何在Unity3d中實現和網頁數據的交互
Unity3D和網衡早棚頁數據交互的基本原理簡介:
1、Unity3D的游戲引擎是和編輯器集成在一起的,所有它也是一個製作/開發平台。
2、Unity3D是使用JavaScript、C#作為核心腳本語言來驅動事個游戲引擎。
3、平台可以
數據交互:
1、在Unity3D中調用網頁js函數
如果我們在html中有腳本函數;則在u3d中我們可用使用Application.ExternalCall調用js函數,該方法只適合在Web3D環境下使用。該方法支持基本類型的傳遞和數組傳遞,任何類型都會轉換成字元串類型使用。
例子代碼:
Application.ExternalCall("SayHello","Thegamesayshello!);//調用SayHello,傳遞一個字元串
2、在Unity3D中直接執行一段腳本代碼如:
Application.ExternalEval("if(document.location.host!='unity3d.com'){document.location='http://unity3d.com';}");
3、在js中調用Unity3D函數(傳遞消息等)
如果有Unity3D中有一段用JS寫的功能函數:
functionMyFunction(param:String)
{
Debug.Log(param);
}
需要在JS中呼叫這個函數則可以這樣寫:
這里要注意的是MyObject代表Unity3D中的一個場景名稱為MyObject,MyFunction是調用的函數,最後一個字元為傳遞的參數。
與php,jsp等的表單數據交互
與php,jsp等的表單數據交睜租互很可能會是今後用到的主要方式,原理是利用form表彰傳遞數據,下面以php為例來進行說明。
Unity3D可以實現向某個指定頁面發送表單數據然後在php中使用_POST獲取傳遞回來的表彰數據。
比如:$action=$_POST["myform_action"];//定義一個變數$action用來獲取頁面傳遞過來的表單數據
if($action!=""){
echo$action;//如果接收到了數據則列印出數據內容
}
?>
在Unity3D中我們發送數據的代碼如下咐則:
varform=newWWWForm();//定義一個網頁表單
form.AddField("myform_action","Action1");//添加一個表彰欄位名稱為myform_action內容是action1
vardownload=newWWW("www.xxx.com/index.php",form);//發送表單數據到指定網址頁面
假如index.php執行的是資料庫/統計操作,我們就可以對傳遞的數據進行保存讀取或者其他操作了。
『貳』 學習web前端能做游戲開發嗎
前端技術包括JavaScript、ActionScript、CSS、xHTML、Adobe AIR、Google Gears等「傳統」技術,概念強的交互設計,藝術性強的視覺設計等。一般來說,你平時使用的手機應用和你玩的web游戲都屬於Web前端開發領域。
理解網路前端人才所需要的技術,我們就能明白學習網路前端人才的就業方向:
1.高級網路前端工程師,這是網路前端工程師的最基本的選擇。當前網路前端面臨的問題是從業者大量涌現,但是真正掌握技術的人才非常稀少,從業者的工資也非常高。
2.高級網路架構師,具有最廣泛的網路相關知識沉澱,更容易成為網路架構師。這方面的職業發展並不像第一種那樣那麼順利,主要是作為一個架構師必須學習的內容:後端技術, DBA, Platform等等,這些知識通常需要在項目中進行實際操作,但是只要你堅持下去,未來將會是無限光明的。
3自主創業,成為自己的老闆。身為前端技術人員,我們需要更多地關注行業、產業鏈和相關產品領域的動態,保持對細節的關注優勢,同時加強對某一產品乃至某一公司命運的控制。
但是Web前端能做游戲嗎?答案是可以的,Canvas和WebGL的出現讓Web游戲有了實現的可能。如果你不用游戲引擎,那就寫原生HTML、JS、CSS,或者使用Canvas/svg。如果使用游戲引擎,又想用前端的技術棧,那就用cocos creator,一次開發,多端打包。如果你想做3D游戲,那就直接用Unity3D吧。不過雖然Unity3D也支持JS作為腳本語言,但實際上大部分公司和團隊選擇的是C#,大部分教程也是以C#作為腳本語言,所以如果要上手Unity3d,那就需要學習C#
『叄』 Web3D與unity3d有什麼關系
前者是一個統稱,後者是其中一個軟體。還有virtools等等軟體
『肆』 學unity3D好還是web前端好
雖然不能一概而論,但是從工作環境的角度來說游戲行業整體確實不如互聯網行業,管理和思維模式都相對保守些,甚至到處還能看到使用瀑布式開發的團隊。如果更注重生活質量,做前端可選擇的餘地要更大。
從技術追求角度,web 前端跟 3D 開發沒法比,unity 是更好的選擇。但從另一個角度,有理想的技術宅即使做 web 前端也不可能讓自己長期滯留在這個領域,總能轟轟烈烈地向新的領域邁進,所以選擇 web 前端雖然不是好的切入點(個人以為),但對於有理想的技術宅並不會成為技術進步的障礙,關鍵看個人。
『伍』 webgl和unity區別
應用范圍不同:WebGL是一種3D圖形標准,野物它使用JavaScript語言編寫3D圖形應用程序,並且可以橋慎跨平台運行。它具有良好的兼容性,可以在所有主流瀏覽器中運行頌消液,並且性能較好。Unity3D是一個跨平台的游戲開發工具,它使用C#和JavaScript編寫游戲邏輯,支持Windows、Mac、iOS、Android、WebGL等多種平台。
『陸』 如何在Unity3d中實現和網頁數據的交互
1、unity向網頁發送數據的函數:Application.ExternalCall("SayHello",gameObject.name),這個函數將調用網頁中的SayHello函數,gameObject.name為傳遞的參數。
2、網頁向unity發送數據的函數:網頁中用GetUnity().SendMessage(message, "AcceptName", buildingname)函數來調用unity中的函數,此函數的參數message為unity中的物體,AcceptName為物體上的函數,buildingname為傳遞的參數。
網頁中的函數如下:
1 function SayHello(message){//此函數來接收unity中發送出來的message值,並將處理後的數據再發送回unity中
2 jQuery.post('../Unity/javascript/DBhelper.ashx', {id:message}, function(data)
3 {
4 var msg=JSON.parse(data);//將json數據解析
5 var buildingname = msg[0].Building_name;
6 var buildingcategory=msg[0].Building_category;
7 var buildingpic = msg[0].Building_pic;
8 GetUnity().SendMessage(message, "AcceptName", buildingname);//向unity中的message物體上的MyFunction函數發送buildingname值
9 GetUnity().SendMessage(message, "AcceptCategory", buildingcategory);
10
11 GetUnity().SendMessage(message, "AcceptImg", buildingpic);
12 });
13 }
此函數將unity中發送的數據message傳到DBhelper.ashx中,在DBhelper.ashx中將傳遞過來的數據進行查詢等操作,然後再用GetUnity().SendMessage(message, "AcceptName", buildingname)將處理好的數據buildingname傳給unity中的AcceptName函數。
以下是unity中的腳本,可以實現中文,關於中文的實現由於文章有限,在此不再說明,只說明怎樣接收網頁中的數據。
1 var chineseSkin : GUISkin;//在此可以選擇字體,並設置為中文。建議編輯器設為uft-8。
2
3 var buildingname:String;//用來接收從網頁中傳遞過來的buildingname值
4 var buildingcategory:String;//用來接收從網頁中傳遞過來的buildingcategory值
5
6 var buildingpic:Texture2D;//用來接收從網頁中傳遞過來的buildingpic值
7 var windowRect0 = Rect (20, 20, 250, 200);
8 var enable:boolean;
9 function Awake(){
10 enable = false ;
11 }
12 function OnMouseDown () {
13 Application.ExternalCall("SayHello",gameObject.name);// 向網頁中的SayHello函數發送gameObject.name數據
14 enable = true;
15 }
16 function AcceptName(bdname){//用於接收網頁中發送回來的數據
17 buildingname=bdname;
18 }
19 function AcceptCategory(buildingType){//用於接收網頁中發送回來的數據
20 buildingcategory=buildingType;
21 }
22
23 function AcceptImg(img){
24 var www :WWW = new WWW("http://localhost:1166/Unity/images/"+img+"");
25 yield www;
26 buildingpic=www.texture;
27 }
28 function OnGUI(){
29 GUI.skin=chineseSkin;
30 if(enable)
31 {
32 windowRect0 = GUI.Window (0, windowRect0, DoMyWindow, "屬性");
33 }
34 }
35 function DoMyWindow (windowID : int) {
36 GUI.Label(Rect(10,50,80,30),"建築物名字");
37 GUI.TextField(Rect(100,50,100,30),buildingname);
38 GUI.Label(Rect(10,100,80,30),"建築物類型");
39 GUI.TextField(Rect(100,100,100,30),buildingcategory);
40
41 GUI.DrawTexture(Rect(10,150,200,50),buildingpic,ScaleMode.ScaleToFit,true,0);
42 if(GUI.Button(Rect(190,20,50,30),"退出")){
43 enable = false;
44 }
45 GUI.DragWindow (Rect (0,0,10000,10000));
46 }
47 function OnMouseOver(){
48 transform.Rotate(0,Time.deltaTime*100,0,Space.World);
49 }
50 function OnMouseEnter(){
51 renderer.material.color = Color.blue;
52 }
53 function OnMouseExit(){
54 renderer.material.color = Color.yellow;
55 }
這是unity中的腳本,此腳本實現點擊物體,彈出物體的屬性。