├── .gitignore ├── README.md └── Simple Prefab Pool ├── Assets ├── Prefabs.meta ├── Prefabs │ ├── pref_Cube.prefab │ └── pref_Cube.prefab.meta ├── Scenes.meta ├── Scenes │ ├── MainScene.unity │ └── MainScene.unity.meta ├── Scripts.meta └── Scripts │ ├── Sample.meta │ ├── Sample │ ├── MyCube.cs │ ├── MyCube.cs.meta │ ├── MyCubePool.cs │ ├── MyCubePool.cs.meta │ ├── TestMyPool.cs │ └── TestMyPool.cs.meta │ ├── SimplePrefabPool.meta │ └── SimplePrefabPool │ ├── AbstractPrefabPool.cs │ ├── AbstractPrefabPool.cs.meta │ ├── GameObjectPool.cs │ ├── GameObjectPool.cs.meta │ ├── IPrefabPool.cs │ ├── IPrefabPool.cs.meta │ ├── PrefabPoolUtils.cs │ └── PrefabPoolUtils.cs.meta └── ProjectSettings ├── AudioManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshLayers.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── QualitySettings.asset ├── TagManager.asset └── TimeManager.asset /.gitignore: -------------------------------------------------------------------------------- 1 | _ReSharper.Simple Prefab Pool-csharp 2 | 3 | # =============== # 4 | # Unity generated # 5 | # =============== # 6 | Temp/ 7 | obj/ 8 | Library/ 9 | 10 | # ===================================== # 11 | # Visual Studio / MonoDevelop generated # 12 | # ===================================== # 13 | ExportedObj/ 14 | *.svd 15 | *.userprefs 16 | *.csproj 17 | *.pidb 18 | *.suo 19 | *.sln 20 | *.user 21 | *.unityproj 22 | *.booproj 23 | 24 | # ============ # 25 | # OS generated # 26 | # ============ # 27 | .DS_Store 28 | .DS_Store? 29 | ._* 30 | .Spotlight-V100 31 | .Trashes 32 | ehthumbs.db 33 | Thumbs.db 34 | 35 | # ======================== # 36 | # Assembly generated files # 37 | # ======================== # 38 | Assembly-CSharp-Editor-vs.csproj 39 | Assembly-CSharp-vs.csproj 40 | Assembly-CSharp.csproj 41 | Assembly-CSharp-Editor.csproj -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Description outdated - will be updated soon ! unity3d-prefab-pool 2 | =================== 3 | 4 | Simple Prefab Pool for Unity3D 5 | 6 | **Summary**: This project provides a simple implementation for pool of prefabs to avoid performance issues with runtime prefab instantiation. 7 | 8 | The project contains an example of usage. You can also read about simple prefab pool from [my blog post on blogger](http://android-by-example.blogspot.com/2013/09/simple-pool-of-prefabs-for-unity3d-game.html). 9 | 10 | *** 11 | 12 | The usage is extremely simple. First you create an instance of PrefabPool (there are overloaded constructors for flexibility). The constructor with all parameters: 13 | ### Creating the pool 14 | ```csharp 15 | // Create pool of cubes containing instantiated cubePrefabs 16 | PrefabPool cubesPool = 17 | new PrefabPool(cubePrefab, parent, initialPoolSize, growth, maxPoolSize); 18 | ``` 19 | 20 | This is the code that creates a pool of `cubePrefab` transform objects, instantiates `initialPoolSize` number of them (items are inactive after instantiation). If there is a need to instantiate more prefabs they will be batch instantiated `growth` number at a time. You can also limit the size of your pool by specifying `maxPoolSize`. 21 | 22 | Now the only methods you should care about are `ObtainPrefab` and `RecyclePrefab`. When you obtain prefab from the pool it is set to be active and you specify its new position, rotation and scale. 23 | ### Obtaining instantiated prefab from the pool 24 | 25 | ```csharp 26 | Transform retrievedCubeInstance1 = cubesPool.ObtainPrefabInstance(newParent.gameObject); 27 | ``` 28 | ### Recycling active instantiated prefab 29 | ```csharp 30 | cubesPool.RecyclePrefab(retrievedCubeInstance1); 31 | ``` 32 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c52bde2f4100dcf40ae2dbaed0cdb634 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Prefabs/pref_Cube.prefab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/Assets/Prefabs/pref_Cube.prefab -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Prefabs/pref_Cube.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df0e06ff8b8123e4bb1c29627a3b5e91 3 | NativeFormatImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c50bae5704ca73547a383b077eb3a893 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scenes/MainScene.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/Assets/Scenes/MainScene.unity -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scenes/MainScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 82d7e6f7feeec534793ea32ca4afc17d 3 | DefaultImporter: 4 | userData: 5 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b58fd686726623b49ba2bd0dff54d4bc 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/Sample.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a1181eb94951e7b4c90957640fe73566 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/Sample/MyCube.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class MyCube : MonoBehaviour 4 | { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/Sample/MyCube.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca49ef89a4a92d94aa8dd33a96803b17 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/Sample/MyCubePool.cs: -------------------------------------------------------------------------------- 1 | using SimplePrefabPool; 2 | using UnityEngine; 3 | 4 | public class MyCubePool : AbstractPrefabPool 5 | { 6 | public MyCubePool(MyCube objectToCopy, GameObject parent) : base(objectToCopy, parent) 7 | { 8 | } 9 | 10 | public MyCubePool(MyCube objectToCopy, GameObject parent, int initialSize) : base(objectToCopy, parent, initialSize) 11 | { 12 | } 13 | 14 | public MyCubePool(MyCube objectToCopy, GameObject parent, int initialSize, int growth) : base(objectToCopy, parent, initialSize, growth) 15 | { 16 | } 17 | 18 | public MyCubePool(MyCube objectToCopy, GameObject parent, int initialSize, int growth, int availableItemsMaximum) : base(objectToCopy, parent, initialSize, growth, availableItemsMaximum) 19 | { 20 | } 21 | 22 | /* 23 | * Cube gets YELLOW when allocated 24 | */ 25 | protected override void OnHandleAllocatePrefab(MyCube prefabInstance) 26 | { 27 | prefabInstance.gameObject.SetActive(true); 28 | prefabInstance.renderer.material.color = Color.yellow; 29 | prefabInstance.transform.position = new Vector3(-3, -3, -3); 30 | } 31 | 32 | /* 33 | * Cube gets GREEN when obtained 34 | */ 35 | protected override void OnHandleObtainPrefab(MyCube prefabInstance) 36 | { 37 | prefabInstance.gameObject.SetActive(true); 38 | prefabInstance.renderer.material.color = Color.green; 39 | } 40 | 41 | /* 42 | * Cube gets RED when recycled 43 | * 44 | * Intentionally left active to stay visible 45 | */ 46 | protected override void OnHandleRecyclePrefab(MyCube prefabInstance) 47 | { 48 | prefabInstance.gameObject.SetActive(true); 49 | prefabInstance.renderer.material.color = Color.red; 50 | } 51 | } -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/Sample/MyCubePool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c7d5736e7999484c94e5136f195d23d 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/Sample/TestMyPool.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class TestMyPool : MonoBehaviour 6 | { 7 | public MyCube cubePrefab; 8 | public GameObject newParent; 9 | 10 | public int initialPoolSize = 15; // number of prefabs that will be instantiated when pool is created 11 | public int growth = 5; // number of new prefabs instantiated when the pool grows in size 12 | public int maxPoolSize = int.MaxValue; 13 | 14 | private GameObject _poolClonesContainer; 15 | private MyCubePool _cubesPool; 16 | 17 | private List _myInstantiatedCubes; 18 | void Awake() 19 | { 20 | _poolClonesContainer = GameObject.FindGameObjectWithTag("PoolHolder"); 21 | _myInstantiatedCubes = new List(); 22 | } 23 | 24 | private void Start() 25 | { 26 | // Create pool of cubes containing instantiated cubePrefabs 27 | _cubesPool = new MyCubePool(cubePrefab, _poolClonesContainer, initialPoolSize, growth, maxPoolSize); 28 | 29 | StartCoroutine(ObtainPoolItems()); 30 | } 31 | 32 | private IEnumerator ObtainPoolItems() 33 | { 34 | // Obtain already instantiated pool items. 35 | const int numberOfCubesRequired = 5; 36 | for (int i = 0; i < numberOfCubesRequired; i++) 37 | { 38 | // obtained item becomes active the moment you retrieve it 39 | var obtainedInstance = _cubesPool.ObtainPrefabInstance(); 40 | obtainedInstance.transform.position = new Vector3(i, i, i); 41 | _myInstantiatedCubes.Add(obtainedInstance); 42 | yield return new WaitForSeconds(0.5f); 43 | } 44 | 45 | yield return StartCoroutine(RecyclePoolItems()); 46 | } 47 | 48 | private IEnumerator RecyclePoolItems() 49 | { 50 | const int numberOfCubesToRecycle = 3; 51 | // Recycle prefabs that are not needed at the moment 52 | for (int i = 0; i < numberOfCubesToRecycle; i++) 53 | { 54 | Debug.Log("recycle"); 55 | // recycled item becomes inactive the moment you recycle it 56 | _cubesPool.RecyclePrefabInstance(_myInstantiatedCubes[i]); 57 | yield return new WaitForSeconds(0.5f); 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/Sample/TestMyPool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bae7ee540e7004d4182f68fccff88e86 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 26ff2350f3d6d854f9b46104c6f8c7b2 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool/AbstractPrefabPool.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using Object = UnityEngine.Object; 5 | 6 | namespace SimplePrefabPool 7 | { 8 | public abstract class AbstractPrefabPool : IPrefabPool where T : Object 9 | { 10 | private readonly List _availableInstances; 11 | private readonly T _objectToCopy; 12 | 13 | private readonly int _growth; 14 | 15 | public int UnrecycledPrefabCount { get; private set; } 16 | 17 | public int AvailablePrefabCount 18 | { 19 | get { return _availableInstances.Count; } 20 | } 21 | 22 | public int AvailablePrefabCountMaximum { get; private set; } 23 | 24 | #region constructors 25 | 26 | protected AbstractPrefabPool(T objectToCopy, GameObject parent) 27 | : this(objectToCopy, parent, 0) 28 | { 29 | } 30 | 31 | protected AbstractPrefabPool(T objectToCopy, GameObject parent, int initialSize) 32 | : this(objectToCopy, parent, initialSize, 1) 33 | { 34 | } 35 | 36 | protected AbstractPrefabPool(T objectToCopy, GameObject parent, int initialSize, int growth) 37 | : this(objectToCopy, parent, initialSize, growth, int.MaxValue) 38 | { 39 | } 40 | 41 | protected AbstractPrefabPool(T objectToCopy, GameObject parent, int initialSize, int growth, int availableItemsMaximum) 42 | { 43 | if (growth <= 0) 44 | { 45 | throw new ArgumentOutOfRangeException("growth must be greater than 0!"); 46 | } 47 | if (availableItemsMaximum < 0) 48 | { 49 | throw new ArgumentOutOfRangeException("availableItemsMaximum must be at least 0!"); 50 | } 51 | 52 | _objectToCopy = objectToCopy; 53 | _growth = growth; 54 | AvailablePrefabCountMaximum = availableItemsMaximum; 55 | _availableInstances = new List(initialSize); 56 | 57 | if (initialSize > 0) 58 | { 59 | BatchAllocatePoolItems(initialSize); 60 | } 61 | } 62 | #endregion 63 | 64 | #region abstract_members 65 | /* 66 | * Every item passes this method before it gets recycled 67 | */ 68 | protected abstract void OnHandleAllocatePrefab(T prefabInstance); 69 | 70 | /* 71 | * Every item passes this method before it is obtained from the pool 72 | */ 73 | protected abstract void OnHandleObtainPrefab(T prefabInstance); 74 | 75 | /* 76 | * Every item passes this method before it gets recycled 77 | */ 78 | protected abstract void OnHandleRecyclePrefab(T prefabInstance); 79 | 80 | #endregion 81 | 82 | public T ObtainPrefabInstance() 83 | { 84 | T prefabInstance; 85 | 86 | if (_availableInstances.Count > 0) 87 | { 88 | prefabInstance = RetrieveLastItemAndRemoveIt(); 89 | } 90 | else 91 | { 92 | if (_growth == 1 || AvailablePrefabCountMaximum == 0) 93 | { 94 | prefabInstance = AllocatePoolItem(); 95 | } 96 | else 97 | { 98 | BatchAllocatePoolItems(_growth); 99 | prefabInstance = RetrieveLastItemAndRemoveIt(); 100 | } 101 | 102 | Debug.Log(GetType().FullName + "<" + prefabInstance.GetType().Name + "> was exhausted, with " + UnrecycledPrefabCount + 103 | " items not yet recycled. " + 104 | "Allocated " + _growth + " more."); 105 | } 106 | 107 | OnHandleObtainPrefab(prefabInstance); 108 | UnrecycledPrefabCount++; 109 | 110 | return prefabInstance; 111 | } 112 | 113 | 114 | 115 | 116 | public void RecyclePrefabInstance(T prefab) 117 | { 118 | if (prefab == null) { throw new ArgumentNullException("Cannot recycle null item!"); } 119 | 120 | OnHandleRecyclePrefab(prefab); 121 | 122 | if (_availableInstances.Count < AvailablePrefabCountMaximum) { _availableInstances.Add(prefab); } 123 | UnrecycledPrefabCount--; 124 | 125 | if (UnrecycledPrefabCount < 0) { Debug.Log("More items recycled than obtained"); } 126 | } 127 | 128 | private T AllocatePoolItem() 129 | { 130 | var instance = Object.Instantiate(_objectToCopy, Vector3.zero, Quaternion.identity) as T; 131 | OnHandleAllocatePrefab(instance); 132 | return instance; 133 | } 134 | 135 | #region herlper_methods 136 | private void BatchAllocatePoolItems(int count) 137 | { 138 | List availableItems = _availableInstances; 139 | 140 | int allocationCount = AvailablePrefabCountMaximum - availableItems.Count; 141 | if (count < allocationCount) 142 | { 143 | allocationCount = count; 144 | } 145 | 146 | for (int i = allocationCount - 1; i >= 0; i--) 147 | { 148 | availableItems.Add(AllocatePoolItem()); 149 | } 150 | } 151 | 152 | private T RetrieveLastItemAndRemoveIt() 153 | { 154 | int lastElementIndex = _availableInstances.Count - 1; 155 | var prefab = _availableInstances[lastElementIndex]; 156 | _availableInstances.RemoveAt(lastElementIndex); 157 | 158 | return prefab; 159 | } 160 | #endregion 161 | } 162 | } -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool/AbstractPrefabPool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6aa94b76d6b94194eb646b482a94e2ad 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool/GameObjectPool.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace SimplePrefabPool 4 | { 5 | public class GameObjectPool : AbstractPrefabPool 6 | { 7 | public GameObjectPool(GameObject objectToCopy, GameObject parent) : base(objectToCopy, parent) 8 | { 9 | } 10 | 11 | public GameObjectPool(GameObject objectToCopy, GameObject parent, int initialSize) : base(objectToCopy, parent, initialSize) 12 | { 13 | } 14 | 15 | public GameObjectPool(GameObject objectToCopy, GameObject parent, int initialSize, int growth) : base(objectToCopy, parent, initialSize, growth) 16 | { 17 | } 18 | 19 | public GameObjectPool(GameObject objectToCopy, GameObject parent, int initialSize, int growth, int availableItemsMaximum) : base(objectToCopy, parent, initialSize, growth, availableItemsMaximum) 20 | { 21 | } 22 | 23 | #region abstract_members_implementation 24 | 25 | protected override void OnHandleAllocatePrefab(GameObject prefabInstance) 26 | { 27 | prefabInstance.SetActive(false); 28 | } 29 | 30 | protected override void OnHandleObtainPrefab(GameObject prefabInstance) 31 | { 32 | prefabInstance.SetActive(true); 33 | } 34 | 35 | protected override void OnHandleRecyclePrefab(GameObject prefabInstance) 36 | { 37 | prefabInstance.SetActive(false); 38 | } 39 | 40 | #endregion 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool/GameObjectPool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c1e81e281c09184b9dac91b39579115 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool/IPrefabPool.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace SimplePrefabPool 4 | { 5 | public interface IPrefabPool where T : Object 6 | { 7 | int UnrecycledPrefabCount { get; } 8 | 9 | int AvailablePrefabCount { get; } 10 | 11 | int AvailablePrefabCountMaximum { get; } 12 | 13 | T ObtainPrefabInstance(); 14 | 15 | void RecyclePrefabInstance(T prefab); 16 | } 17 | } -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool/IPrefabPool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f294b1d76aae71f45912f393b2939fe7 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool/PrefabPoolUtils.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System; 3 | 4 | namespace SimplePrefabPool 5 | { 6 | public static class PrefabPoolUtils 7 | { 8 | /// 9 | /// Changes gameObjects parent and resets transform and layer. 10 | /// 11 | /// New parent 12 | /// Child whose parent needs to be changed 13 | public static void AddChild(GameObject parent, GameObject child) 14 | { 15 | if (child == null) 16 | { 17 | throw new NullReferenceException("Child GameObject must not be null"); 18 | } 19 | 20 | var t = child.transform; 21 | t.parent = parent == null ? null : parent.transform; 22 | 23 | ResetTransform(t); 24 | 25 | if (parent != null) { child.layer = parent.layer; } 26 | } 27 | 28 | private static void ResetTransform(Transform t) 29 | { 30 | t.localPosition = Vector3.zero; 31 | t.localRotation = Quaternion.identity; 32 | t.localScale = Vector3.one; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Simple Prefab Pool/Assets/Scripts/SimplePrefabPool/PrefabPoolUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 13a360dd75ffb4d3aa5b6bc79f8d8636 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/NavMeshLayers.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/NavMeshLayers.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /Simple Prefab Pool/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TarasOsiris/unity3d-prefab-pool/cf8a9b34368ca6cae55f405afe038d89f19d8cbf/Simple Prefab Pool/ProjectSettings/TimeManager.asset --------------------------------------------------------------------------------