125 lines
5.0 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace EasyInject.Utils
{
public interface IIoC
{
/// <summary>
/// 创建一个GameObject作为Bean
/// </summary>
/// <param name="original">原型</param>
/// <param name="beanName">名字</param>
/// <typeparam name="T">Bean类型</typeparam>
/// <returns>Bean实例</returns>
T CreateGameObjectAsBean<T>(GameObject original, string beanName) where T : MonoBehaviour;
/// <summary>
/// 创建一个GameObject作为Bean
/// </summary>
/// <param name="original">原型</param>
/// <param name="beanName">名字</param>
/// <param name="parent">父物体</param>
/// <typeparam name="T">Bean类型</typeparam>
/// <returns>Bean实例</returns>
T CreateGameObjectAsBean<T>(GameObject original, string beanName, Transform parent) where T : MonoBehaviour;
/// <summary>
/// 创建一个GameObject作为Bean
/// </summary>
/// <param name="original">原型</param>
/// <param name="beanName">名字</param>
/// <param name="parent">父物体</param>
/// <param name="instantiateInWorldSpace">是否在世界空间中实例化</param>
/// <typeparam name="T">Bean类型</typeparam>
/// <returns>Bean实例</returns>
T CreateGameObjectAsBean<T>(GameObject original, string beanName, Transform parent,
bool instantiateInWorldSpace) where T : MonoBehaviour;
/// <summary>
/// 创建一个GameObject作为Bean
/// </summary>
/// <param name="original">原型</param>
/// <param name="beanName">名字</param>
/// <param name="position">位置</param>
/// <param name="rotation">旋转</param>
/// <typeparam name="T">Bean类型</typeparam>
/// <returns>Bean实例</returns>
T CreateGameObjectAsBean<T>(GameObject original, string beanName, Vector3 position, Quaternion rotation)
where T : MonoBehaviour;
/// <summary>
/// 创建一个GameObject作为Bean
/// </summary>
/// <param name="original">原型</param>
/// <param name="beanName">名字</param>
/// <param name="position">位置</param>
/// <param name="rotation">旋转</param>
/// <param name="parent">父物体</param>
/// <typeparam name="T">Bean类型</typeparam>
/// <returns>Bean实例</returns>
T CreateGameObjectAsBean<T>(GameObject original, string beanName, Vector3 position, Quaternion rotation,
Transform parent) where T : MonoBehaviour;
/// <summary>
/// 删除一个游戏物体Bean
/// </summary>
/// <param name="bean">Bean实例</param>
/// <param name="beanName">Bean名字</param>
/// <param name="deleteGameObj">是否删除游戏物体</param>
/// <param name="t">延迟时间</param>
/// <typeparam name="T">Bean类型</typeparam>
/// <returns>是否删除成功</returns>
bool DeleteGameObjBean<T>(T bean, string beanName = "", bool deleteGameObj = false, float t = 0.0F)
where T : MonoBehaviour;
/// <summary>
/// 立即删除一个游戏物体Bean
/// </summary>
/// <param name="bean">Bean实例</param>
/// <param name="beanName">Bean名字</param>
/// <param name="deleteGameObj">是否删除游戏物体</param>
/// <typeparam name="T">Bean类型</typeparam>
/// <returns>是否删除成功</returns>
bool DeleteGameObjBeanImmediate<T>(T bean, string beanName = "", bool deleteGameObj = false)
where T : MonoBehaviour;
/// <summary>
/// 只添加实例Bean
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="bean">Bean实例</param>
/// <param name="beanName">Bean名字</param>
/// <returns></returns>
bool AddBean<T>(T bean, string beanName)
where T : MonoBehaviour;
/// <summary>
/// 获取一个Bean
/// </summary>
/// <param name="name">Bean的名字</param>
/// <typeparam name="T">Bean的类型</typeparam>
/// <returns>Bean实例</returns>
T GetBean<T>(string name = "") where T : class;
List<T> GetBeans<T>() where T : class;
/// <summary>
/// 获取场景中需要注入的MonoBehaviour实例
/// </summary>
void Init();
/// <summary>
/// 清空该场景的Bean
/// </summary>
/// <param name="scene">场景名称</param>
/// <param name="clearAcrossScenesBeans">是否清空跨场景的Bean</param>
void ClearBeans(string scene = null, bool clearAcrossScenesBeans = false);
/// <summary>
/// 清空该场景的Bean
/// </summary>
/// <param name="clearAcrossScenesBeans">是否清空跨场景的Bean</param>
void ClearBeans(bool clearAcrossScenesBeans);
}
}