UNITY之动态创建NGUI对象

    xiaoxiao2025-07-26  5

    public class NewBehaviourScript : MonoBehaviour { public UIAtlas mAtlas;   public UIFont mFont;   public string mSriteName;   public GameObject PanleMe; /// <summary>   /// 动态加载一个NGUI按钮   /// </summary>   /// <param name="name"></param>   private void CreateServerButton(string key,string name, int index)   {   //获得深度(要创建button的Panle的深度)   int depth = NGUITools.CalculateNextDepth(PanleMe);   //创建button物体,命名、设tag、摆所在panle的相对位置。   GameObject go = NGUITools.AddChild(PanleMe);   go.name = name;   go.tag = "trendsButton";   go.transform.localPosition = new Vector3(0, 0, 0);   //添加button的背景图片UISprite   UISprite bg = NGUITools.AddWidget<UISprite>(go);   bg.type = UISprite.Type.Sliced;   bg.name = "Background";   bg.depth = depth;   //背景图片使用的图集   bg.atlas = mAtlas;   //图集中使用的精灵名字   bg.spriteName = "Cheeto_skillA_01";   bg.transform.localScale = new Vector3(1, 1, 1);   //调整位置(必要)   // bg.MakePixelPerfect();   print (bg.localSize); //如果有字体,添加UILabel   if (mFont != null)   {   UILabel lbl = NGUITools.AddWidget<UILabel>(go);   lbl.bitmapFont = mFont;   lbl.text = key;   lbl.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);   lbl.transform.localPosition = new Vector3(0, 0, -1f);   lbl.color = Color.black;   //lbl.MakePixelPerfect();   //添加碰撞(有碰撞才能接收鼠标/触摸),大小与Button背景一致   BoxCollider box = bg.gameObject.AddComponent<BoxCollider> ();  box.center = new Vector3(0,0,-1);   box.size = new Vector3(bg.localSize.x, bg.localSize.y, 0);   UIButton btnScript = bg.gameObject.AddComponent<UIButton> (); UIEventListener.Get (bg.gameObject).onClick = OnClick; //bg.gameObject.AddComponent<Test> (); //UIEventListener.Get (bg.gameObject).onClick = OnClick; // // btnScript.onClick.Add (new EventDelegate (clicke)); //添加UIButton触发事件的必要组件,并关联之前生成的UISprite   //go.AddComponent<UIButton>().tweenTarget = bg.gameObject;   //添加动态效果组件(大小、位移、音效)。(可选)   // go.AddComponent<UIButtonScale>();   // go.AddComponent<UIButtonOffset>();   // go.AddComponent<UIButtonSound>();   /*------ 一下是自己要用到的UIButton功能,可以绑自己需要的组件 ------*/   //添加一个开启Player list Panel 的按钮事件   /* UIButtonTween serverListPanel = go.AddComponent<UIButtonTween>();   serverListPanel.tweenTarget = PanleNext;   serverListPanel.playDirection = AnimationOrTween.Direction.Forward;   serverListPanel.ifDisabledOnPlay = AnimationOrTween.EnableCondition.EnableThenPlay;   //隐藏自己panel   UIButtonTween hidemePanel = go.AddComponent<UIButtonTween>();   hidemePanel.tweenTarget = PanleMe;   hidemePanel.playDirection = AnimationOrTween.Direction.Reverse;   hidemePanel.disableWhenFinished = AnimationOrTween.DisableCondition.DisableAfterReverse;   //添加点击事件,参数是服务器ID(点击获取本服务器ID的下所有角色)   UIButtonMessage ubm = go.AddComponent<UIButtonMessage>();   ubm.target = Playerlist;   //给UIButtonMessage子增加传递‘参数’功能。   ubm.functionName = "Playerlist";   ubm.parameterStr = key;   */ }   /// <summary>   /// 清空动态生成的按钮   /// </summary> ///  ///  /*   void cleantrendsButton()   {   GameObject[] tbs = GameObject.FindGameObjectsWithTag("trendsButton");   for (int i = 0; i < tbs.Length; i++)   {   Destroy(tbs[i].gameObject);   }   }   */ // Use this for initialization void Start () { CreateServerButton ("你好中国","MyButton",1); } void clicke(){ print ("click"); } // Update is called once per frame void Update () { } void OnClick(GameObject go){ print ("OOOOOO"); } }
    转载请注明原文地址: https://ju.6miu.com/read-1301099.html
    最新回复(0)