Unity中创建物体比较耗费资源,为了提高效率可以使用对象池,即对已创建的对象不销毁,通过打开关闭、修改属性可以反复使用,减少创建次数。
public class DateAxis : MonoBehaviour {
//此列表保存已创建对象
List<GameObject> listGos = new List<GameObject>();
public void UpdateDateAxis()
{
int i = 0;
for (i = 0; i < 50; i++)
{
GameObject newGo;
if (i < listGos.Count)
{
//物体已存在,直接打开
newGo = listGos[i];
if (!newGo.activeSelf)
newGo.SetActive(true);
}
else
{
//物体不存在,直接创建
newGo = Instantiate(prefabDayLine, transform);
listGos.Add(newGo);
}
//do something...
//goDayLine.GetComponent<RectTransform>().anchoredPosition = new Vector2(sumLength, 0.0f);
}
//关闭多余物体
if(i < listGos.Count)
{
for(int k = i; k < listGos.Count; k++)
{
if (listGos[k].gameObject.activeSelf)
listGos[k].gameObject.SetActive(false);
}
}
}
}