本例仅以熟悉NGUI组件功能为目的,想快捷简便的创建按钮或其它游戏物体请参考 “Unity3D 动态实例化Prefab”
以动态创建服务器列表为例。
- public UIAtlas mAtlas;
- public UIFont mFont;
- public string mSriteName;
- public GameObject Playerlist;
-
-
-
-
- private void CreateServerButton(string key,string name, int index)
- {
-
- int depth = NGUITools.CalculateNextDepth(PanleMe);
-
- GameObject go = NGUITools.AddChild(PanleMe);
- go.name = name;
- go.tag = "trendsButton";
- go.transform.localPosition = new Vector3(-180 + (index % 3) * 180, 140, 0);
-
-
- UISprite bg = NGUITools.AddWidget<UISprite>(go);
- bg.type = UISprite.Type.Sliced;
- bg.name = "Background";
- bg.depth = depth;
-
- bg.atlas = mAtlas;
-
- bg.spriteName = mSriteName;
- bg.transform.localScale = new Vector3(150f, 40f, 1f);
-
- bg.MakePixelPerfect();
-
-
- if (mFont != null)
- {
- UILabel lbl = NGUITools.AddWidget<UILabel>(go);
- lbl.font = mFont;
- lbl.text = name;
- lbl.transform.localScale = new Vector3(22f, 22f, 1f);
- lbl.transform.localPosition = new Vector3(0, 0, -1f);
- lbl.color = Color.black;
- lbl.MakePixelPerfect();
- }
-
-
- BoxCollider box = NGUITools.AddWidgetCollider(go);
- box.center = new Vector3(0,0,-1);
- box.size = new Vector3(bg.transform.localScale.x, bg.transform.localScale.y, 0);
-
-
- go.AddComponent<UIButton>().tweenTarget = bg.gameObject;
-
- go.AddComponent<UIButtonScale>();
- go.AddComponent<UIButtonOffset>();
- go.AddComponent<UIButtonSound>();
-
-
-
- UIButtonTween serverListPanel = go.AddComponent<UIButtonTween>();
- serverListPanel.tweenTarget = PanleNext;
- serverListPanel.playDirection = AnimationOrTween.Direction.Forward;
- serverListPanel.ifDisabledOnPlay = AnimationOrTween.EnableCondition.EnableThenPlay;
-
-
- UIButtonTween hidemePanel = go.AddComponent<UIButtonTween>();
- hidemePanel.tweenTarget = PanleMe;
- hidemePanel.playDirection = AnimationOrTween.Direction.Reverse;
- hidemePanel.disableWhenFinished = AnimationOrTween.DisableCondition.DisableAfterReverse;
-
-
- UIButtonMessage ubm = go.AddComponent<UIButtonMessage>();
- ubm.target = Playerlist;
-
- ubm.functionName = "Playerlist";
- ubm.parameterStr = key;
- }
-
-
-
-
- void cleantrendsButton()
- {
- GameObject[] tbs = GameObject.FindGameObjectsWithTag("trendsButton");
- for (int i = 0; i < tbs.Length; i++)
- {
- Destroy(tbs[i].gameObject);
- }
- }

NGUI 动态添加控件
原文:http://www.cnblogs.com/dabiaoge/p/4122978.html