UNITY之动态创建NGUI对象

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");
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值