使用UGUI自定義五邊形

2021-07-09 10:17:42 字數 1601 閱讀 7632

using unityengine;

using system.collections.generic;

using unityengine.ui;

/* *

* 5

* *

* 6 0 4

* *

* 1 2 3

*

* *

*/public

class uipropwidget : graphic

void update()

public

void

init()

private

void

updatevertex(listvbo, listlist)

}protected

override

void

onfillvbo(listvbo)

}

乙個canvasrenderer進行繪製,所有的控制項和可顯示的元素都是graphic。graphic持有乙個canvasrenderer,通過setvertices設定頂點,最終完成繪製。 舉例來說,image控制項就是乙個graphic,這個gameobject上面同時還有乙個canvasrenderer,兩者結合起來最終把繪製完成。

以五邊形中心點為原點,求出五個頂點1, 4, 3, 6, 7以及底邊中心點2的位置

因為ugui的繪製元素是quad而不是三角形,setvertices中設定的頂點數目必須是4的倍數,所以用他們組成兩個四邊形 1,2,3,4和5,6,7,8用這兩個四邊形組成乙個五邊形

給的座標是相對於自己的座標系的畫素座標(相對於自已的privot)假設我要繪製乙個100*100的矩形,privot是(0.5,0.5),四個頂點的座標則分別為(-50,-50),(50, -50),(50, 50),(-50, 50)

最後補充一些關於vertex設定的知識點。

乙個控制項的gameobject上面只允許有乙個graphic,所以不可能同時存在image和text。 我們自定義形狀的控制項可以通過兩種方式來實現,一種是過載graphic,這樣這個控制項就與image等價,這裡有兩個比較重要的可以過載的函式 updategeometry和onfillvbo。如果看下ugui的源**可以發現,updategeometry其實就是獲取乙個list,呼叫onfillvbo設定頂點資料,再呼叫所有的basevertexeffect元件進行頂點修改,最後傳遞給canvasrenderer。 onfillvbo就是我們常用的設定頂點的地方,只要在裡面給vbo的引數add資料就可以了,重複一下上文說過的,add的數目必須是4的倍數。 image和text都是通過這裡設定頂點資料的。

上面有提到basevertexeffect,這個就是另外乙個可以修改頂點資訊的地方,它是乙個修飾的元件,以text和outline為例,text是乙個graphic,在控制項上面新增的outline就是乙個basevertexeffect,graphic在執行的時候會獲取控制項上面所有的basevertexeffect,然後設定頂點的時候依次呼叫。 我們可以實現乙個自定義效果,繼承自basevertexeffect,然後過載modifyvertex函式進行頂點設定。

五邊形lisp程式 CAD LISP 程式

1 10 1.計算所有線段總長度 載入後只需框選所有線段便可得出這些線段的總長度 defun c ll setvar cmdecho 1 setq en ssget list 0 spline,arc,line,ellipse,lwpolyline setq i 0 setq ll 0 repeat...

Css3之五邊形跟六邊形

今天我們來討論下如果做五邊形跟六邊形,五邊形可以拆成梯形跟三角形組合起來 還有個思路就是三個三角形,兩個鈍角的,然後通過transform旋轉得到五邊形,這個大家自己去試試 六邊形可以拆成兩個三角形和乙個長方形 我們先來了解下梯形如何做 梯形 trapezoid有沒有發現做梯形跟做三角形的 差不多,...

五邊形頂點座標 足球頂點座標的計算

預備知識 解三稜錐頂角,空間旋轉矩陣 圖 1 足球透檢視 足球的各種常用資料都可以由乙個條件推出,那就是它有 60 個頂點 考慮到每個頂點都有 3 條同樣長度的稜,稜的個數為 begin text times text text 90 end 另外每個頂點都由乙個正五邊形和兩個正六邊形共用,所以五邊...