遇到的问题:
在使用NGUI时希望在脚本中动态实例化一些范例UI组件,但发现实例化之后组件的位置会自动改变,尝试使用trasform.postion手动设定物体的位置,但得出的结果却不正确。
分析:
在NGUI使用Instantiate实例化物体都是以NGUI的摄像机为基础的,所以不能使用trasform.postion,而改为trasform.localPostion,即可。
解决方法:
public GameObject UserPrefab;
// Use this for initialization
//public GameObject gobject=null;
//x:-760 y:150 ===============x:790 y:-450
void Start () {
float py = 150f;
for (int y = 0; y < 5; y++)
{
float px = -760;
for (int x = 0; x < 6; x++)
{
Debug.Log("x:" + px + " y:" + py);
GameObject objPre = (GameObject)Instantiate(UserPrefab);
objPre.transform.parent = this.transform;
objPre.transform.localPosition = new Vector3(px,py, 0);
objPre.transform.localScale = new Vector3(1, 1, 1);
objPre.GetComponentInChildren<UILabel>().text = "x:"+px+" py"+py;
px = px + 310;
}
py = py - 150;
}
}
原文链接:https://blog.youkuaiyun.com/fangchenown/article/details/50463846