NGUI 코드 읽기

1385 단어 NGUI
NGUI에서 sprite 등 컨트롤은 Mesh Render가 없다. 즉, Hierarchy 패널에서 볼 수 있는 NGUI 컨트롤은 렌더링되지 않는다. 그들은 단지 Tranform 정보와 스크립트를 저장하는 캐리어인 UIPanel NGUI가 진정으로 렌더링하는 것을 UIDraw Call NGUI라고 하는 UIDraw Call은 UIPanel을 캐리어로 한다.
public class UIPanel : MonoBehaviour{

	OrderedDictionary mChildren = new OrderedDictionary();
	// List of all widgets managed by this panel
	BetterList<UIWidget> mWidgets = new BetterList<UIWidget>();

	// Widgets using these materials will be rebuilt next frame
	BetterList<Material> mChanged = new BetterList<Material>();
	// List of UI Screens created on hidden and invisible game objects
BetterList<UIDrawCall> mDrawCalls = new BetterList<UIDrawCall>();

	// Cached in order to reduce memory allocations
	BetterList<Vector3> mVerts = new BetterList<Vector3>();
	BetterList<Vector3> mNorms = new BetterList<Vector3>();
	BetterList<Vector4> mTans = new BetterList<Vector4>();
	BetterList<Vector2> mUvs = new BetterList<Vector2>();



}

NGUI의 모든 렌더링 가능 컨트롤은
UIWidget
UI Widget의 Start () 에서 호출되는Create Panel () 는 자신을 부모 노드의Panel과 연결시키고 자신의Add를 부모Panel의 mWidgets로 옮긴다. 그 다음에 가장 중요한 방법은 UIPanel의void Fill (Material mat) 이다. 이 방법은Panel의 mWidgets를 두루 훑어보고 GetDrawCall이다.

좋은 웹페이지 즐겨찾기