-
- using Godot;
-
- public static class ObjectManager
- {
- /// <summary>
- /// 根据资源路径获取实例对象, 该对象必须实现 IPoolItem 接口
- /// </summary>
- /// <param name="resPath">资源路径</param>
- public static IPoolItem GetPoolItem(string resPath)
- {
- var item = ObjectPool.GetItem(resPath);
- if (item == null)
- {
- item = (IPoolItem)ResourceManager.LoadAndInstantiate<Node>(resPath);
- item.Logotype = resPath;
- }
-
- return item;
- }
-
- /// <summary>
- /// 根据资源路径获取实例对象, 该对象必须实现 IPoolItem 接口
- /// </summary>
- /// <param name="resPath">资源路径</param>
- public static T GetPoolItem<T>(string resPath) where T : IPoolItem
- {
- var item = ObjectPool.GetItem<T>(resPath);
- if (item == null)
- {
- item = (T)(IPoolItem)ResourceManager.LoadAndInstantiate(resPath);
- item.Logotype = resPath;
- }
-
- return item;
- }
-
- /// <summary>
- /// 根据类型直接获取实例对象
- /// </summary>
- public static T GetPoolItemByClass<T>() where T : IPoolItem, new()
- {
- var name = typeof(T).FullName;
- var item = ObjectPool.GetItem<T>(name);
- if (item == null)
- {
- item = new T();
- item.Logotype = name;
- }
-
- return item;
- }
-
- public static Bullet GetBullet(string id)
- {
- var bullet = ObjectPool.GetItem<Bullet>(id);
- if (bullet == null)
- {
- bullet = ActivityObject.Create<Bullet>(id);
- bullet.Logotype = id;
- }
-
- return bullet;
- }
-
- public static Laser GetLaser(string resPath)
- {
- var bullet = ObjectPool.GetItem<Laser>(resPath);
- if (bullet == null)
- {
- bullet = ResourceManager.LoadAndInstantiate<Laser>(resPath);
- bullet.Logotype = resPath;
- }
-
- return bullet;
- }
- }