創作內容

9 GP

Unity3D與遊戲程式設計(二)

作者:雪藏│2014-08-02 13:43:39│巴幣:18│人氣:2140
前陣子因為新工作需要,所以都在研究PHP跟NOSQL,現在比較有空了,再來寫一些東西。
很多使用Unity的朋友,應該都有用過NGUI這個套件,用它來做UI介面相當方便,但各位朋友是否曾好奇過NGUI怎麼把它的物件顯示出來的?我們今天就來研究這個問題。
上圖是NGUI的一個場景,我們可以看到在Panel這個物件上,有一個UIPanel的script,而所有的UI物件都是它的子物件。那我把UIPanel這個script關掉,看會發生什麼事

由上圖可以看到UI物件不顯示,顯然NGUI的物件顯示是UIPanel在管理的。再來開啟UIPanel這個script看看裡面的程式碼


Fill()這個方主要的工作就是把要繪製的物件頂點,材質, 貼圖, Shader, 丟給UIDrawCall這個script去做顯示。我們再打開UIDrawCall這個script

由上圖我們可以發現,在UNITY_EDITOR的模式裡時,用
UnityEditor.EditorUtility.CreateGameObjectWithHideFlags這個方法產生了一個物件,而在非UNITY_EDITOR模式中時,用一般的方式來產生物件,最後這兩個方法產生的物件都會附加上UIDrawCall這個script,那我們現在把程式碼改一下

然後再回到Unity裡看看有什麼變化

你會發現場景上多了一個名叫SciFi Atlas的物件,而且它就已經包含了整個UI的幾何圖形,看到這裡,你應該已經了解NGUI是如何把DrawCall減到那麼少了吧?因為它把用相同Atlas的幾何圖形合併成一個了,然後它身上也有一般模型所需要的Mesh Filter跟Mesh Renderer這兩個component,所以NGUI並不是不需要這兩個component去顯示物件而是把它藏起來了。
在了解這些底層原理後,對你使用NGUI在優化上會很大幫助,所以把它學起來吧。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2536759
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 2 篇留言

星砂彌雪
你好 請問一下你有研究unity連結資料庫這方面的教學或者心得嗎? 我目前在正在學習這一方面的知識[e1]

08-03 21:36

雪藏
那你目前對如何存取資料庫的了解有多少08-03 22:31
星砂彌雪
不多 目前還在收集資料與學習的階段 大概知道要連自己的資料庫的話要打上localhost連別人的話就改IP 應該是這樣 但存取資料庫裡面的東西就都不懂了

08-03 23:15

雪藏
那你打算使用socket server還是web service去存取資料庫?08-03 23:35
我要留言提醒:您尚未登入,請先登入再留言

9喜歡★andy1214 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Unity3D與遊戲程式... 後一篇:在Unity呼叫Nati...

追蹤私訊切換新版閱覽

作品資料夾

pjfl20180818空氣
真糟糕看更多我要大聲說11小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】