コード例 #1
0
        public GameObject GetPooledObject(poolEntity p)
        {
            //1
            int type = (int)p;

            //setActive(pool [type].obj (i),true);
            GameObject go = pool[type].pop();

            if (go != null)
            {
                return(go);
            }

            //3
            if (pool[type].willGrow)
            {
                GameObject obj = Instantiate(pool[type].pooledObject);
                //setActive(obj,true);
                pool[type].add(obj);
                obj = pool[type].pop(obj);

                return(obj);
            }

            return(null);
        }
コード例 #2
0
        /*
         * public GameObject GetPooledObject(poolEntity p, Vector3 position, Quaternion rotation, GameObject parent = null) {
         *      //1
         *      int type = (int) p;
         *      for (int i = 0; i < pool[type].count(); i++) {
         *              //2
         *              if (!pool[type].active(i)) {
         *                      //setActive(pool [type].obj (i),true);
         *                      pool[type].obj(i).transform.position = position;
         *                      pool[type].obj(i).transform.rotation = rotation;
         *                      if (parent != null)
         *                              pool[type].obj(i).transform.SetParent(parent.transform);
         *                      return pool[type].obj(i);
         *              }
         *      }
         *      //3
         *      if (pool[type].willGrow) {
         *              GameObject obj = (GameObject)Instantiate (pool[type].pooledObject);
         * //setActive(obj,true);
         *              pool[type].add (obj);
         *              obj.transform.position = position;
         *              obj.transform.rotation = rotation;
         *              if (parent != null)
         *                      obj.transform.SetParent(parent.transform);
         *              return obj;
         *      }
         *
         *      return null;
         * }
         *
         * public GameObject GetPooledObject(poolEntity p)
         * {
         *      //1
         *      int type = (int)p;
         *      //Debug.Log(string.Format("type {0}", type));
         *      for (int i = 0; i < pool[type].count(); i++)
         *      {
         *              //2
         *              if (!pool[type].active(i))
         *              {
         *                      //setActive(pool [type].obj (i),true);
         *                      pool[type].obj(i).transform.position = new Vector3();
         *                      pool[type].obj(i).transform.rotation = new Quaternion();
         *                      return pool[type].obj(i);
         *              }
         *      }
         *      //3
         *      if (pool[type].willGrow)
         *      {
         *              GameObject obj = (GameObject)Instantiate(pool[type].pooledObject);
         *              //setActive(obj,true);
         *              obj.transform.position = new Vector3();
         *              obj.transform.rotation = new Quaternion();
         *              pool[type].add(obj);
         *              return obj;
         *      }
         *
         *      return null;
         * }
         *
         */

        public GameObject GetPooledObject(poolEntity p, Vector3 position, Quaternion?rotation = null, GameObject parent = null)
        {
            //1
            int type = (int)p;

            //setActive(pool [type].obj (i),true);
            GameObject go = pool[type].pop();

            if (go != null)
            {
                go.transform.position = position;
                if (rotation != null)
                {
                    go.transform.rotation = rotation.Value;
                }
                if (parent != null)
                {
                    go.transform.SetParent(parent.transform);
                }
                return(go);
            }

            //3
            if (pool[type].willGrow)
            {
                GameObject obj = (GameObject)Instantiate(pool[type].pooledObject);
                //setActive(obj,true);
                pool[type].add(obj);
                obj = pool[type].pop(obj);
                obj.transform.position = position;
                if (rotation != null)
                {
                    obj.transform.rotation = rotation.Value;
                }
                if (parent != null)
                {
                    obj.transform.SetParent(parent.transform);
                }
                return(obj);
            }

            return(null);
        }