Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class PickAxeTestManager : MonoBehaviour {
- public GameObject PickAxeprefab;
- void Start ()
- {
- PickAxePoolManager.instance.CreatePool (PickAxeprefab, 2); //CreatePool is a method in PickAxePoolManager
- }
- void Update ()
- {
- if (Input.GetKeyDown (KeyCode.A))
- {
- PickAxePoolManager.instance.ReuseObject(PickAxeprefab, Vector3.zero, Quaternion.identity); //ReuseObject is also a method in PickAxePoolManager
- }
- if (ResetByWall.instance.OnTriggerEnter()) //ERROR CS1501 is here. "No overload for method OnTriggerEnter takes 0 arguments".
- {
- PickAxePoolManager.instance.ReuseObject(PickAxeprefab, Vector3.zero, Quaternion.identity); // Same here...
- }
- }
- }
- using UnityEngine;
- using System.Collections;
- public class ResetByWall : MonoBehaviour {
- public bool collided;
- //NOTE:
- //Singleton Pattern from lines 12 to 25 //
- // ************************************
- static ResetByWall _instance; // Reference to the Reset By Wall script
- public static ResetByWall instance // This is the accessor
- {
- get
- {
- if(_instance == null) // Check to see if _instance is null
- {
- _instance = FindObjectOfType<ResetByWall>(); //Find the instance in the Reset By Wall script in the currently active scene
- }
- return _instance;
- }
- }
- //public GameObject prefab;
- public void OnTriggerEnter(Collider other) {
- collided = true;
- if (other.gameObject.tag == "Pick Axe_PoolerTest") //I tagged the prefab as "Pick Axe_PoolerTest"
- {
- Debug.Log("Pick Axe entered the trigger!");
- Destroy(other.gameObject);
- }
- }
- }
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- public class PickAxePoolManager : MonoBehaviour {
- Dictionary<int,Queue<GameObject>> poolDictionary = new Dictionary<int,Queue<GameObject>>();
- //NOTE:
- //Singleton Pattern used from lines 12 to 25
- static PickAxePoolManager _instance; // Reference to the Pool Manager script
- public static PickAxePoolManager instance // This is the accessor
- {
- get
- {
- if(_instance == null) // Check to see if _instance is null
- {
- _instance = FindObjectOfType<PickAxePoolManager>(); //Find the instance in the Pool Manager script in the currently active scene
- }
- return _instance;
- }
- }
- /// <summary>
- /// Creates the pool.
- /// </summary>
- /// <param name="prefab">Prefab.</param>
- /// <param name="poolSize">Pool size.</param>
- public void CreatePool(GameObject prefab, int poolSize)
- {
- int poolKey = prefab.GetInstanceID (); // Unique integer for every GameObject
- if (!poolDictionary.ContainsKey (poolKey)) //Make sure poolKey is not already in the Dictionary,
- //if it's not then we can create the pool
- {
- poolDictionary.Add(poolKey, new Queue<GameObject>());
- for (int i = 0; i < poolSize; i++) //Instantiate the prefabs as dictated by the "poolSize" integer
- {
- GameObject newObject = Instantiate (prefab) as GameObject; //Instantiate as a GameObject
- newObject.SetActive(false); // Don't want it to be visible in the scene yet
- poolDictionary [poolKey].Enqueue(newObject); // Add it to our Pool
- }
- }
- }
- /// <summary>
- /// Reuses the object in our pool.
- /// </summary>
- /// <param name="prefab">Prefab.</param>
- /// <param name="position">Position.</param>
- /// <param name="rotation">Rotation.</param>
- public void ReuseObject (GameObject prefab, Vector3 position, Quaternion rotation)
- {
- int poolKey = prefab.GetInstanceID (); // Get our pool key once again
- if (poolDictionary.ContainsKey (poolKey)) // Quick check to make sure our pool dictionary contains the pool key
- {
- GameObject objectToReuse = poolDictionary[poolKey].Dequeue(); //Get the next object in the pool
- poolDictionary[poolKey].Enqueue(objectToReuse); // Add the object back onto the end of the queue so it can be reused later
- objectToReuse.SetActive(true); //Make sure the object was not disabled
- objectToReuse.transform.position = position; // set position to applied values
- objectToReuse.transform.rotation = rotation; // set rotation to applied values
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement