由于項(xiàng)目需要,要求用unity來展示三維場景,并在三維中能夠方便的查詢數(shù)據(jù)庫等。一開始嘗試在unity中直接連接數(shù)據(jù)庫,當(dāng)時(shí)連的xml,然而每次發(fā)布成網(wǎng)頁后都會(huì)出現(xiàn)路徑找不到等問題,所以迫不得已采用了unity向網(wǎng)頁傳送數(shù)據(jù),網(wǎng)頁中處理數(shù)據(jù)(查詢數(shù)據(jù)庫),然后將處理過的數(shù)據(jù)再反傳送給unity,最終在unity中將其展示(在網(wǎng)頁中展示更為靈活)。
創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對(duì)營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級(jí),滿足企業(yè)一站式成都全網(wǎng)營銷需求,讓再小的品牌網(wǎng)站設(shè)計(jì)也能產(chǎn)生價(jià)值!原理很簡單:
1、unity向網(wǎng)頁發(fā)送數(shù)據(jù)的函數(shù):Application.ExternalCall("SayHello",gameObject.name),這個(gè)函數(shù)將調(diào)用網(wǎng)頁中的SayHello函數(shù),gameObject.name為傳遞的參數(shù)。
2、網(wǎng)頁向unity發(fā)送數(shù)據(jù)的函數(shù):網(wǎng)頁中用GetUnity().SendMessage(message, "AcceptName",buildingname)函數(shù)來調(diào)用unity中的函數(shù),此函數(shù)的參數(shù)message為unity中的物體,AcceptName為物體上的函數(shù),buildingname為傳遞的參數(shù)。
網(wǎng)頁中的函數(shù)如下:
1functionSayHello(message){//此函數(shù)來接收unity中發(fā)送出來的message值,并將處理后的數(shù)據(jù)再發(fā)送回unity中
2jQuery.post('../Unity/javascript/DBhelper.ashx',{id:message},function(data)
3 {
4varmsg=JSON.parse(data);//將json數(shù)據(jù)解析
5varbuildingname = msg[0].Building_name;
6varbuildingcategory=msg[0].Building_category;
7varbuildingpic = msg[0].Building_pic;
8GetUnity().SendMessage(message, "AcceptName",buildingname);//向unity中的message物體上的MyFunction函數(shù)發(fā)送buildingname值
9GetUnity().SendMessage(message,"AcceptCategory", buildingcategory);
10
11GetUnity().SendMessage(message,"AcceptImg", buildingpic);
12 });
13}
此函數(shù)將unity中發(fā)送的數(shù)據(jù)message傳到DBhelper.ashx中,在DBhelper.ashx中將傳遞過來的數(shù)據(jù)進(jìn)行查詢等操作,然后再用GetUnity().SendMessage(message,"AcceptName", buildingname)將處理好的數(shù)據(jù)buildingname傳給unity中的AcceptName函數(shù)。
以下是unity中的腳本,可以實(shí)現(xiàn)中文,關(guān)于中文的實(shí)現(xiàn)由于文章有限,在此不再說明,只說明怎樣接收網(wǎng)頁中的數(shù)據(jù)。
1varchineseSkin : GUISkin;//在此可以選擇字體,并設(shè)置為中文。建議編輯器設(shè)為uft-8。
2
3varbuildingname:String;//用來接收從網(wǎng)頁中傳遞過來的buildingname值
4varbuildingcategory:String;//用來接收從網(wǎng)頁中傳遞過來的buildingcategory值
5
6var buildingpic:Texture2D;//用來接收從網(wǎng)頁中傳遞過來的buildingpic值
7var windowRect0 = Rect (20, 20, 250, 200);
8varenable:boolean;
9function Awake(){
10enable = false ;
11}
//鼠標(biāo)按下去時(shí)觸發(fā)的事件
12functionOnMouseDown () {
13Application.ExternalCall("SayHello",gameObject.name);//向網(wǎng)頁中的SayHello函數(shù)發(fā)送gameObject.name數(shù)據(jù)
14enable = true;
15}
16functionAcceptName(bdname){//用于接收網(wǎng)頁中發(fā)送回來的數(shù)據(jù)
17buildingname=bdname;
18}
19functionAcceptCategory(buildingType){//用于接收網(wǎng)頁中發(fā)送回來的數(shù)據(jù)
20buildingcategory=buildingType;
21}
22
23functionAcceptImg(img){
//讀取文件夾下的圖片文件
24var www :WWW = newWWW("http://localhost:1166/Unity/images/"+img+"");
25yield www;
//為buildingpic設(shè)置紋理
26buildingpic=www.texture;
27}
//繪制GUI元素時(shí)觸發(fā)的事件
28functionOnGUI(){
29GUI.skin=chineseSkin;
30if(enable)
31{
//繪制一個(gè)窗體,記住第三個(gè)參數(shù)是方法名字
32windowRect0 = GUI.Window (0, windowRect0,DoMyWindow, "屬性");
33}
34}
//繪制一個(gè)窗體,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}
//鼠標(biāo)在上面時(shí)觸發(fā)
47functionOnMouseOver(){
48transform.Rotate(0,Time.deltaTime*100,0,Space.World);
49}
//鼠標(biāo)進(jìn)入時(shí)觸發(fā)
50functionOnMouseEnter(){
51renderer.material.color = Color.blue;
52}
//鼠標(biāo)離開時(shí)觸發(fā)
53functionOnMouseExit(){
54renderer.material.color =Color.yellow;
55}
這是unity中的腳本,此腳本實(shí)現(xiàn)點(diǎn)擊物體,彈出物體的屬性。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。