public ObjectPoolImpl(int id, PoolManagedBehaviour prefab, ObjectPoolConfig config, Transform hierarchyParent = null, IObjectPoolCallback <PoolManagedBehaviour> callback = null) { this.id = id; this.prefab = prefab; this.Config = config; this.hierarchyParent = hierarchyParent; this.callback = callback ?? new NopObjectPoolCallBack <PoolManagedBehaviour>(); hasParent = hierarchyParent != null; prefab.gameObject.SetActive(false); // avoid to call OnAwake OnEnable and OnDisable when CreateInstance if (hierarchyParent != null) { UnityEngine.Object.DontDestroyOnLoad(hierarchyParent); } }
/// <summary>Add disposable to controller. Return value is self disposable.</summary> /// see UniRx.DisposableExtensions.AddTo public static T DisposeWhenReturn <T>(this T disposable, PoolManagedBehaviour poolManagedBehaviour) where T : IDisposable { #pragma warning disable RECS0017 if (disposable == null) { throw new ArgumentNullException("disposable"); } #pragma warning restore RECS0017 if (poolManagedBehaviour == null) { throw new ArgumentNullException("poolManagedBehaviour"); } var poolObjectController = poolManagedBehaviour.GetComponent <PoolObjectController>(); if (poolObjectController == null) { throw new ArgumentNullException("poolObjectController"); } poolObjectController.AddDisposable(disposable); return(disposable); }
public void OnCreateInstance(int id) { Id = id; Behaviour = GetComponent <PoolManagedBehaviour>(); }
public void Return(PoolManagedBehaviour behaviour) { Return(behaviour.GetComponent <PoolObjectController>()); }