Unity3D-动态实例化按钮的总结

目前,我收集到的动态创建按钮只有2种方法。 如果谁还有另外动态创建按钮的方法。可以给我留言,谢谢。大笑


前提:动态创建按钮,都需要创建一个按钮预设体ButtonPrefabs,假如,我们创建四个按钮。

第一种:使用Instantiate() 方法。

for(int i = 0 ;i <4 ;i++)

{

GameObject obj = (GameObject)Instantiate(ButtonPrefabs) ;   //实例化按钮

        obj.transform.Translate(new Vect3(obj.transform.localPosition.x,obj.transform.localPosition.y+(i*-1.5),obj.transform.localPosition.z)) ; //按钮显示的位置

}


//显示效果 : 垂直排列显示

//注意:localPosition---自身位置  +(i*-1.5) -----在自身位置的Y轴上移动多少距离(相对于第一个创建的按钮来讲)


第二种: 使用NGUITools()方法.

注意: 导入NGUI。

for(int i = 0 ;i <4 ;i++)

{

GameObject obj = NGUITools.AddChild(this.gameObject,ButtonPrefabs) ;   //实例化按钮

        obj.transform.Translate(new Vect3(obj.transform.localPosition.x,obj.transform.localPosition.y+(i*-1.5),obj.transform.localPosition.z)) ; //按钮显示的位置

}

注意: NGUITools.AddChild(GameObject parent ,Prefabs pre)  使用NGUITools方法添加物体,前提需要一个父物体。它会相对于这个父物体来添加子物体。


以上这两种方法创建后,显示的效果,要么,是垂直显示的,要么水平显示的。但是,这两种,在项目中,有些时候满足不了。例如,我要显示一个2x2格局式的按钮位置,怎么办?

观察,Translate()方法,这个方法中需要一个Vect3的参数。像2x2这种格局的,如果要用程序来实现的话,过于麻烦,那么,我们可以把2x2的按钮位置(Position)可以用list存储下来。

list<Vect3> list = new List<Vect3>() ;

//添加位置数据

list.Add(new Vector3(0,0,5.35f)) ;
list.Add(new Vector3(0,0,0.39f)) ;
list.Add(new Vector3(0,-3.2f,0.39f)) ;
list.Add(new Vector3(0,-3.2f,5.35f)) ;

修改上面的代码。


for(int i = 0 ;i <4 ;i++)

{

GameObject obj = NGUITools.AddChild(this.gameObject,ButtonPrefabs) ;   //实例化按钮

        obj.transform.Translate(list[i]) ; //按钮显示的位置

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值