NGUI中深度depth和z軸關係

2021-06-19 20:53:03 字數 1872 閱讀 1203

gui中是用depth來控制sprite顯示順序的,本來這很好用,但碰到上面帖子中的問題時卻不好解決了,於是我試驗了下。以下是一些總結,不對的地方請指正。

下面的內容可能看起來比較繞,這樣的話只需實際試驗下就能很容易的知道結果,呵呵

如果還是看不明白,可以先看1樓,那裡有個總結

1,同乙個panel下,同乙個atlas的不同sprite的顯示只受depth的控制,這是最經常用的方式。此時不論精靈的z軸如何變化,depth高的一定在前面。

比如精靈a的z軸是-10,更靠近相機,但它的depth是0,而精靈b的z軸是0但depth是1,那麼精靈b還是顯示在前面

如下圖,0、1、2的字首分別是三者的depth值,則三者的排列就是如圖的由下到上,2_label在最上面

現在在depth不變的前提下修改z軸的值。將0_dark的z軸調為-100,則它離相機更近了,看上去應該擋住後面的兩個才對,但game場景中三者的關係並沒有改變,也就是說雖然看上去0_dark應該擋住後面的東西,但並沒有這樣,還是depth起作用,也就是feiben同學所說的「相同atlas其實是共用同乙個z軸深度」。

比如接著1中的圖,新建乙個panel_b,將1_ngui拖到裡面,會看到它蓋住了0和2,現在調節depth不起作用,無論1_ngui的depth調成多少,都不會改變它在最上面的狀態

比如將0_dark的z設為100,此時1_ngui的z軸還是0.1,但1_ngui重新跑到了最上面,而不是中間

3,不同panel下,不同atlas的精靈的穿插,受z軸的控制。

現在回到帖子中提出的問題,怎麼讓多個atlas的sprite能進行穿插。辦法是用多個panel。

比如有兩個atlas,分別為sifi和wooden,而sifi中有兩個要顯示的精靈dark和label,wooden中有乙個要顯示的精靈wooden,現在想把wooden放到dark和label之間。那麼設定兩個panel,乙個放dark和wooden,另乙個放label,或者乙個放label和wooden,另乙個放dark,只要sifi圖集中的兩個精靈不在同乙個panel中就可以,之後微調其中乙個精靈的z軸就可以了,比如調節label的z軸為-0.1,則如下圖,wooden到了dark和label的中間

不過如果認為為什麼要這麼麻煩呢,只需要在乙個panel中調節就可以了,那就回到了2中的問題上,總是在上或在下,而不會在中間

如下圖,三者在乙個panel下,現在空間位置是wooden在中間z為0,dark為100,lable為-100,且三者的depth也是相應的,但wooden還是在最上面

當然這是最簡單的穿插,如果有多個panel和多個atlas的話情況會比較複雜,此時要記著2中的情況,否則還是容易出現無法穿插的問題。而解決這個問題的方法最好還是atlas設計的時候更全面,讓穿插的sprite在乙個atlas中,這樣只用depth深度就可以控制了

4,同乙個panel下,不同atlas的sprite,受z軸控制,depth不起作用。而預設新增的時候覆蓋關係似乎和atlas有關,比如從sifi圖集和wooden圖集中分別新增任意乙個精靈到同乙個panel下,總是sifi的精靈在下面,此時depth不起作用,可以直接調節z軸比如-0.1就可以

5,(修改)對於panel是否會產生drawcall,之前的試驗存在誤區,當時是直接複製帶著sprite的panel,這的確會產生新的drawcall,這是因為在複製時panel的scale被修改了,由1變成了0.9999304之類的,這會導致drawcall增加了1個,而之後再複製這個由複製產生的panel,scale還是0.9999304,所以drawcall不會再變。

現在發現修改panel的縮放scale的確會增加drawcall。所以如果為了方便而複製乙個panel的話,別忘了reset它的縮放

而之所以對panel是否會產生drawcall,是因為官方例7中只用了2個atlas,但drawcall卻是5個,當時簡單的認為是panel的問題。

CAD中怎麼將Z軸歸零?CADZ軸歸零教程

cad繪圖過程中,當z座標不為零時會導致一系列的問題,如 查詢距離不準確,無法倒角 圓角,無法延伸 裁剪等。那cadz軸歸零該如何操作呢?下面和小編一起來了解一下浩辰cad中z軸歸零的方法技巧吧!當圖紙中只有少數幾個同類圖形z座標不為零時,可以用浩辰cad中開啟圖紙檔案,選擇所有圖形,在特性面板中修...

cadz軸歸零命令 cad 中z軸歸0方法

關於cad中z軸歸0的方法 主要有2種方法,第一種方法 利用 move 移動命令,1,選擇需要z軸歸0的線 2,依次輸入m 0,0,0 0,0,1e99 這步是將線移到z軸無限大 3,選擇需要z軸歸0的線 4,依次輸入m p 選擇上次內容 0,0,0 0,0,1e99 這步是將線移回z軸0 第二種方...

深度學習中的軸 axis dim全解

在深度學習中,軸,指的就是張量的層級,一般通過引數axis dim來設定。很多張量的運算 神經網路的構建,都會涉及到軸,但到底取哪個軸,卻不是那麼容易把握。下面會針對軸 axis dim,基於 pytorch 的 和例項,嘗試去理清張量運算中軸 axis dim的設定。軸的概念 對於乙個張量,它的s...