Unity3D NGUI动态创建按钮
来源:互联网 发布:mac word 登录 编辑:程序博客网 时间:2024/05/21 11:35
原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【119706192】 本文链接地址: Unity3D NGUI动态创建按钮
以动态创建服务器列表为例。
public UIAtlas mAtlas; public UIFont mFont; public string mSriteName; public GameObject Playerlist; /// <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(-180 + (index % 3) * 180, 140, 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 = mSriteName; bg.transform.localScale = new Vector3(150f, 40f, 1f); //跳转位置(必要) bg.MakePixelPerfect(); //如果有字体,添加UILabel 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(); } //添加碰撞(有碰撞才能接收鼠标/触摸),大小与Button背景一致 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); //添加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); } }
0 0
- Unity3D NGUI动态创建按钮
- Unity3D NGUI动态创建按钮
- Unity3D NGUI动态创建按钮
- Unity3D NGUI动态创建按钮
- unity3d ngui 利用 UIAtlas 动态创建 UISprite
- 【Unity3D】【NGUI】Atlas的动态创建
- 【Unity3D】【NGUI】Atlas的动态创建
- unity3d ngui 利用 UIAtlas 动态创建 UISprite
- Unity3D NGUI按钮背景转换
- Unity3D-NGUI动态加载图片
- Unity3D-NGUI动态加载图片
- Unity3D-NGUI动态加载图片
- NGUI动态创建UILabel
- NGUI动态创建UILabel
- NGUI创建动态字体
- 【Unity3D】【NGUI】点击按钮没反映
- 【Unity3D】【NGUI】点击按钮没反应
- NGUI 创建动态字体集
- CUDA4.2 + vs2008配置
- Xcode5中的版本管理(中英对照)
- redies和memcache区别
- Android 下拉刷新(使用异步任务和ViewTreeObserver监听)
- 整理C# 二进制,十进制,十六进制 互转
- Unity3D NGUI动态创建按钮
- 分区表统计信息用法
- Ray - Box Intersection
- 去IOE运动-正在路上
- C++-----虚析构函数
- Asterisk originate的用途
- 2013:由工地到IT的转变
- 少用触发器规范
- 航班号总结业务