cb NGUI元件基類之 UIWidget

2022-01-31 23:52:40 字數 2530 閱讀 3279

ngui的uiwidget是所有元件的基類,它承擔了儲存顯示內容,顏色調配,顯示深度,顯示位置,顯示大小,顯示角度,顯示的多邊形形狀,歸屬哪個uipanel。這就是uiwidget所要承擔的內容。在uiwidget的所有子類中都具有以上相同的屬性和任務。uiwidget和uipanel的關係非常密切,因為uipanel承擔了uiwidget的所有渲染工作,而uiwidget只是承擔了儲存需要渲染資料。所以,在uiwidget在更換貼圖,材質球,甚至更換uipanel父節點時它會及時通知uipanel說:"我更變配置了,你得重新獲取我的渲染資料"。

開啟uiwidget.cs可以看到如下**:

[hideininspector][serializefield] protected material mmat;//

材質[hideininspector][serializefield]

protected texture mtex;//

貼圖[hideininspector][serializefield] color mcolor = color.white;//

顏色[hideininspector][serializefield] pivot mpivot = pivot.center;//

對齊位置

[hideininspector][serializefield]

int mdepth = 0;//

深度protected transform mtrans;//

座標轉換

protected uipanel mpanel;//

相應的uipanel

protected

bool mchanged = true;//

是否更改

protected

bool mplaymode = true;//

模式vector3 mdiffpos;

//位置差異

quaternion mdiffrot;

//旋轉差異

vector3 mdiffscale;

//縮放差異

int mvisibleflag = -1;//

可見標誌

//widget's generated geometry

uigeometry mgeom = new uigeometry();//

多變形例項

在uiwidget中最重要的方法就是onfill(),這是更新渲染多邊型的方法。

///

///virtual function called by the uipanel that fills the buffers.

///virtual

public

void onfill(betterlistverts, betterlistuvs, betterlistcols)

下面是我們封裝的乙個元件寫 uicolorquad.cs

///

author: kk

///using

unityengine;

using

system.collections;

//////

純色正方形,使用兩個三角形組成,僅4個頂點

///[executeineditmode]

[addcomponentmenu(

"ngui/ac-plugins/colorquad")]

public

class

uicolorquad : uiwidget

}protected

override

void

awake()

protected

override

void

onstart()

public

void setsize(float _widht, float

_height)

//////

負責顯示內容,它的工作是填寫如何顯示,顯示什麼。就是把需要顯示的內容儲存在uiwidget

/// ///

///顯示的多邊形形狀

///顏色調配

public

override

void onfill(betterlistverts, betterlistuvs, betterlistcols)

//貼圖點

for (int i = 0; i < arrverts.length; i++)

//頂點顏色

ngui pma

for (int i = 0; i < arrverts.length; i++)

}//建立材質

void

checkquadmaterial()

}uicolorquad.m_uicolorquadmaterial.settexture(

"_maintex

", whitetex);}}

protected

override

void

onupdate()

}}

NGUI渲染元件基類 UIWidget

目錄 ngui原始碼學習 一 uigeometry 儲存了集合圖形的頂點資訊,包括頂點座標 uv 顏色值資訊,並提供了這些資訊的獲取方法。這些頂點資訊最終會新增到所屬uiwidget的uidrawcall裡。uigeometry 幾何物件資料儲存 獲取 property verts 頂點陣列,正常是...

多型之基類函式重寫

下面程式有乙個b類,有乙個a函式,呼叫了自身的b函式 思考 如果有一天我的這個b類不錯,別人想用使用,他拿過去的時候發現b函式並不能滿足他的要求,但是功能就是這個樣子 那麼怎麼解決呢?為了方便給別人使用,並且不破壞我的b類,我就把b函式定義成虛函式,別人可以通過繼承來重寫它。這樣這個問題就解決了。下...

(36 2)多重繼承之虛基類

class 派生類名 virtual 訪問標號 虛基類名,include using namespace std class a 宣告為基類a void fun private int nv 私有成員 class b1 virtual public a 宣告a為虛基類,派生出b1 private i...