//------------------------------------------------------------// Game Framework v3.x// Copyright © 2013-2017 Jiang Yin. All rights reserved.// Homepage: http://gameframework.cn/// Feedback: mailto:jiangyin@gameframework.cn//------------------------------------------------------------using GameFramework;using GameFramework.ObjectPool;using UnityEngine;namespace UnityGameFramework.Runtime{/// <summary>/// 对象池组件。/// </summary>[DisallowMultipleComponent][AddComponentMenu("Game Framework/Object Pool")]public sealed class ObjectPoolComponent : GameFrameworkComponent{private IObjectPoolManager m_ObjectPoolManager = null;/// <summary>/// 游戏框架组件初始化。/// </summary>protected override void Awake(){base.Awake();m_ObjectPoolManager = GameFrameworkEntry.GetModule<IObjectPoolManager>();if (m_ObjectPoolManager == null){Log.Fatal("Object pool manager is invalid.");return;}}private void Start(){}/// <summary>/// 获取对象池数量。/// </summary>public int Count{get{return m_ObjectPoolManager.Count;}}/// <summary>/// 检查是否存在对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <returns>是否存在对象池。</returns>public bool HasObjectPool<T>() where T : ObjectBase{return m_ObjectPoolManager.HasObjectPool<T>();}/// <summary>/// 检查是否存在对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <returns>是否存在对象池。</returns>public bool HasObjectPool<T>(string name) where T : ObjectBase{return m_ObjectPoolManager.HasObjectPool<T>(name);}/// <summary>/// 获取对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <returns>要获取的对象池。</returns>public IObjectPool<T> GetObjectPool<T>() where T : ObjectBase{return m_ObjectPoolManager.GetObjectPool<T>();}/// <summary>/// 获取对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <returns>要获取的对象池。</returns>public IObjectPool<T> GetObjectPool<T>(string name) where T : ObjectBase{return m_ObjectPoolManager.GetObjectPool<T>(name);}/// <summary>/// 获取所有对象池。/// </summary>public ObjectPoolBase[] GetAllObjectPools(){return m_ObjectPoolManager.GetAllObjectPools();}/// <summary>/// 获取所有对象池。/// </summary>/// <param name="sort">是否根据对象池的优先级排序。</param>/// <returns>所有对象池。</returns>public ObjectPoolBase[] GetAllObjectPools(bool sort){return m_ObjectPoolManager.GetAllObjectPools(sort);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>() where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>();}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(string name) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(name);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="capacity">对象池的容量。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(int capacity) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(capacity);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="expireTime">对象池对象过期秒数。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(float expireTime) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(expireTime);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="capacity">对象池的容量。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(string name, int capacity) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(name, capacity);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(string name, float expireTime) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(name, expireTime);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="capacity">对象池的容量。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(int capacity, float expireTime) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(capacity, expireTime);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="capacity">对象池的容量。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(int capacity, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(capacity, priority);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="expireTime">对象池对象过期秒数。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(float expireTime, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(expireTime, priority);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="capacity">对象池的容量。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(string name, int capacity, float expireTime) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(name, capacity, expireTime);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="capacity">对象池的容量。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(string name, int capacity, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(name, capacity, priority);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(string name, float expireTime, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(name, expireTime, priority);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="capacity">对象池的容量。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(int capacity, float expireTime, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(capacity, expireTime, priority);}/// <summary>/// 创建允许单次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="capacity">对象池的容量。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许单次获取的对象池。</returns>public IObjectPool<T> CreateSingleSpawnObjectPool<T>(string name, int capacity, float expireTime, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateSingleSpawnObjectPool<T>(name, capacity, expireTime, priority);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>() where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>();}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(string name) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(name);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="capacity">对象池的容量。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(int capacity) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(capacity);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="expireTime">对象池对象过期秒数。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(float expireTime) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(expireTime);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="capacity">对象池的容量。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(string name, int capacity) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(name, capacity);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(string name, float expireTime) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(name, expireTime);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="capacity">对象池的容量。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(int capacity, float expireTime) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(capacity, expireTime);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="capacity">对象池的容量。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(int capacity, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(capacity, priority);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="expireTime">对象池对象过期秒数。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(float expireTime, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(expireTime, priority);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="capacity">对象池的容量。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(string name, int capacity, float expireTime) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(name, capacity, expireTime);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="capacity">对象池的容量。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(string name, int capacity, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(name, capacity, priority);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(string name, float expireTime, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(name, expireTime, priority);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="capacity">对象池的容量。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(int capacity, float expireTime, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(capacity, expireTime, priority);}/// <summary>/// 创建允许多次获取的对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">对象池名称。</param>/// <param name="capacity">对象池的容量。</param>/// <param name="expireTime">对象池对象过期秒数。</param>/// <param name="priority">对象池的优先级。</param>/// <returns>要创建的允许多次获取的对象池。</returns>public IObjectPool<T> CreateMultiSpawnObjectPool<T>(string name, int capacity, float expireTime, int priority) where T : ObjectBase{return m_ObjectPoolManager.CreateMultiSpawnObjectPool<T>(name, capacity, expireTime, priority);}/// <summary>/// 销毁对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <returns>是否销毁对象池成功。</returns>public bool DestroyObjectPool<T>() where T : ObjectBase{return m_ObjectPoolManager.DestroyObjectPool<T>();}/// <summary>/// 销毁对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="name">要销毁的对象池名称。</param>/// <returns>是否销毁对象池成功。</returns>public bool DestroyObjectPool<T>(string name) where T : ObjectBase{return m_ObjectPoolManager.DestroyObjectPool<T>(name);}/// <summary>/// 销毁对象池。/// </summary>/// <typeparam name="T">对象类型。</typeparam>/// <param name="objectPool">要销毁的对象池。</param>/// <returns>是否销毁对象池成功。</returns>public bool DestroyObjectPool<T>(IObjectPool<T> objectPool) where T : ObjectBase{return m_ObjectPoolManager.DestroyObjectPool(objectPool);}/// <summary>/// 释放对象池中的可释放对象。/// </summary>public void Release(){Log.Info("Object pool release...");m_ObjectPoolManager.Release();}/// <summary>/// 释放对象池中的所有未使用对象。/// </summary>public void ReleaseAllUnused(){Log.Info("Object pool release all unused...");m_ObjectPoolManager.ReleaseAllUnused();}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。