更新日期:2022年1月4日。
Github源码:[点我获取源码] Gitee源码:[点我获取源码]
索引
- 依赖注入
- 使用
- InjectPath
- InjectUI
- 作用域
依赖注入
控制反转模式是一种经典设计模式,关于其概念我就不再过多描述,直接进入正题,目前这里仅支持两种依赖注入方式:
1.InjectPath:通过路径注入依赖;
2.InjectUI:注入UI逻辑类对象;
使用
InjectPath
InjectPath
只能注入GameObject
或组件
,通过路径注入:
public class Test : HTBehaviour
{
protected override bool IsAutomate => true;
[InjectPath("LeftFight")]
private GameObject _leftFightObj;
[InjectPath("LeftFight")]
private Fight _leftFight;
[InjectPath("Collider")]
private BoxCollider _collider;
}
比如此处,Test
脚本所挂载物体的名为LeftFight
的子物体会被注入到_leftFight
字段,其他同理。
Tips:路径注入很简单,就跟查找子级物体一个意思。
InjectUI
而InjectUI
只能注入UI逻辑类对象,通过类型注入:
public class Test : HTBehaviour
{
protected override bool IsAutomate => true;
[InjectUI]
private UIGame _uiGame;
private void Start()
{
Debug.Log("UIGame 是否已打开:" + _uiGame.IsOpened);
}
private void Update()
{
}
}
比如此处,将尝试获取UIGame
类型对象并注入到_uiGame
字段。
Tips:由于UI逻辑类对象
始终是唯一的,所以在任何地方,注入的相同类型的UI逻辑类对象始终都是同一个实例。
作用域
需要注意的是,这两种注入方式并非是全域支持的,他们仅在如下几种情况下被支持使用:
1.继承至HTBehaviour
的脚本(新建的脚本默认继承此类);
2.实体模块;
3.UI模块;
4.FSM(状态、参数、数据);