public void Setup(ObjectStorageData data) { var startTime = DateTime.Now; GameObject parent = data.CreateParent("Background Layer"); NormalPooledObjects = new List <GameObject>(); BigPooledObjects = new List <GameObject>(); NormalObjectsToPool = data.NormalObjectsList; BigObjectsToPool = data.BigObjectsList; for (int i = 0; i < amountToPool; i++) { GameObject obj = (GameObject)MonoBehaviour.Instantiate(data.RandomChoose(NormalObjectsToPool)); obj.transform.SetParent(parent.transform); obj.SetActive(false); data.TryAddColliderTo(obj); NormalPooledObjects.Add(obj); } for (int i = 0; i < BigObjectsToPool.Count; i++) { GameObject obj = (GameObject)MonoBehaviour.Instantiate(data.RandomChoose(BigObjectsToPool)); obj.transform.SetParent(parent.transform); obj.SetActive(false); data.TryAddColliderTo(obj); BigPooledObjects.Add(obj); } var endTime = DateTime.Now; Debug.Log("Object Pooling Time: " + (endTime - startTime).Milliseconds); }
public void CreateNewTrash(GameObject foregroundObject) { ObjectStorageData data = this.SceneConfig.Data; GameObject trash = MonoBehaviour.Instantiate(data.RandomChoose(data.NormalObjectsList)); var trashBounds = GetObjectBounds(trash); var foregroundObjectBounds = GetObjectBounds(foregroundObject); float xOffset = Random.Range(-0.5f * foregroundObjectBounds.size.x, 0.5f * foregroundObjectBounds.size.x); float yOffset = Random.Range(-0.5f * foregroundObjectBounds.size.y, 0.5f * foregroundObjectBounds.size.y); trash.transform.position = new Vector3( foregroundObjectBounds.center.x + xOffset, foregroundObjectBounds.center.y + yOffset, Camera.main.transform.position.z + this.SceneConfig.OcclusionDepth); trash.transform.localScale *= scaleTrash; trash.transform.SetParent(_parent.transform); trashList.Add(trash); }