コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }