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...