今天想用NGUI做个物品栏功能,但实例化是遇到如下问题:
void OnClick()
{
GameObject btn_item = (GameObject)Instantiate("prefabs/btn");<span style="white-space:pre"> </span>//按钮的预设体
btn_item.transform.localPosition =new Vector3 (200, 10, 0); //此处不生效
}
结果按钮一直是在(0,0,0)处出现,无语了。
最后无奈只好把这部分代码放人协同里面
IEnumerator func()
{
GameObject btn_item = (GameObject)Instantiate(Resources.Load ("prefabs<span style="font-family: Arial, Helvetica, sans-serif;">/btn</span><span style="font-family: Arial, Helvetica, sans-serif;">"));</span>
//在物品栏中显示
yield return new WaitForSeconds(0.001f);
btn_item.gameObject.transform.localPosition =new Vector3 (200, 10, 0);
}
在网上查了下,没有结果。感觉是实例化ngui是占了一些时间?
最后又查了下,终于找到答案了
GameObject btn_item = (GameObject)Instantiate(Resources.Load ("prefabs/btn_item"));
//在物品栏中显示
string spName = tagMap[item.item.tag];
btn_item.GetComponent<UISprite>().spriteName = spName;
btn_item.transform.parent = gameObject.transform;<span style="white-space:pre"> </span>//关键之处,必须先指定父级
btn_item.name = string.Format ("btn_item{0}", itemList.Count);
btn_item.transform.localScale = Vector3.one;
btn_item.transform.localPosition = GetItemPosition (itemList.Count, 40);