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 list = new List() ;

//添加位置数据

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]) ; //按钮显示的位置

}




你可能感兴趣的:(Unity3D-动态实例化按钮的总结)