目前,我收集到的动态创建按钮只有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]) ; //按钮显示的位置
}