u3d 設計技巧 之UI 避免Find

2021-07-02 02:38:12 字數 778 閱讀 7426

我們都知道了,find ** ()函式是很消耗效能的,所以不被推薦使用;

對於大型的遊戲,ui複雜,加上設計上的不合理等問題(parent-child層級問題),很多時候就會被緊張的工期打亂自己的想法。

像下面的例子:

要避免find,那就使用getcomponent 來獲取指令碼。  指令碼中就引用這想要的gameobject,

所以在差不多的層級上就要有這個指令碼專門做這件事(不是必須的)

我們要得到乙個下面的物件,就先得到 引用他的指令碼所在的物件,然後在getcomponent 來獲取指令碼,最後我們就可以訪問了。

指令碼引用gameobject 就是在inspector上賦值。

這種方法,對 動態建立ui物件預製體,也是沒有問題的。

在遊戲設計中,還有乙個問題,就是ui是動態建立的,那麼對ui的事件觸發,我們是希望被其他的類接受並觸發,這裡就有問題了,因為我們並不能像hierarchy中的物件一樣,簡單的拖拽進行賦值了,那怎麼辦呢?

像ngui 中提供的:

eventdelegate.set(

_uicardsetboard.transform.findchild("button").getcomponent().onclick,

onclosecardset);

但是有的時候我們也要考慮這樣的設計是不是最好的。

總之,ui就是要多思考的東西,從層級設計上開始。



U3D線性空間及UI相關

首先說一下碰到的問題 應美術的要求,專案的color space轉換為linear space 預設為gamma space 轉換後,ui出現了半透及顏色偏差的問題。gamma space 從紋理中取樣得到的數值 g x 1 gamma 直接參與shader計算,然後傳入color buffer混合...

U3D 遊戲開發邏輯設計

1 總體思想,高內聚,低耦合,按功能劃分,將整體功能劃分成單一功能,每個功能單獨實現。2 依據單一職責原則,每個功能只管自己的部分,總的控制類來控制各個功能中的互動類。例如 將某個單一功能用3個 檔案來控制,ui,data,service,ui只管介面,data只管存資料,service來改變dat...

U3D包大小優化之microlib

當邇想把最小類庫發上來,邇需要把stripping level設定為use micro mscorlib 這裡是microlib所能使用的包的類庫列表 但如果邇不想手動去對著這個列表,邇可以從u3d編譯器檢視相應提示資訊,邇便可以通過提示而找出是哪些 出錯了。1 最先做的應該是檢測dll庫,可以空建...