首页 > 其他分享 >【Unity】 HTFramework框架(四十二)【进阶篇】使用依赖注入(控制反转模式)

【Unity】 HTFramework框架(四十二)【进阶篇】使用依赖注入(控制反转模式)

时间:2022-12-13 15:07:27浏览次数:81  
标签:InjectUI InjectPath private 进阶篇 Unity 源码 UI HTFramework 注入


更新日期: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​​字段,其他同理。

【Unity】 HTFramework框架(四十二)【进阶篇】使用依赖注入(控制反转模式)_unity

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​​字段。

【Unity】 HTFramework框架(四十二)【进阶篇】使用依赖注入(控制反转模式)_游戏引擎_02


Tips:由于​​UI逻辑类对象​​始终是唯一的,所以在任何地方,注入的相同类型的UI逻辑类对象始终都是同一个实例。

作用域

需要注意的是,这两种注入方式并非是全域支持的,他们仅在如下几种情况下被支持使用:

1.继承至​​HTBehaviour​​​的脚本(新建的脚本默认继承此类);
2.​​实体模块​​;
3.​​UI模块​​;
4.​​FSM​​(状态、参数、数据);


标签:InjectUI,InjectPath,private,进阶篇,Unity,源码,UI,HTFramework,注入
From: https://blog.51cto.com/u_15911199/5934130

相关文章

  • Unity UGUI图文混排源码(一)
    我从一开始想到的图文混排的概念都是通过文字间的空隙去粘贴一张图片,这样确定图片前面文字的最后一个位置变成了最主要的参数,接下来就给出两种解决方案首先,先发UGUI源码的一......
  • Unity UGUI基础之Text
    Text作为UGUI最基础的控件以及最常用的控件,它在项目中的应用绝对可以算是最多的,任何一个UI界面可以说都离不开它,它的基本属性如下:一、recttransform组件:recttransform(矩形......
  • Unity UGUI实现图文混排
    目前在unity实现图文混排的好像都是通过自定义字体然后在文本获取字符的位置,用图片替换掉图片标签,这样对于支持英文来说,并没有什么影响。然后对于中文来说就是一个相当麻烦......
  • Unity插件 - MeshEditor(十) 模型风力拉扯特效
    更新日期:2020年4月23日。 Github源码:​​​[点我获取源码]​​ 先上几张效果图:  (导演:我们需要一个刮风的效果,道具组,上大风扇) (导演:咔!!!行了,道具组你们明天不用来上班了) ......
  • Unity 纹理优化及TextureProcessor工具
    更新日期:2020年11月18日。Github源码:​​​[点我获取源码]​​索引​​纹理优化​​​​TextureProcessor工具​​​​使用​​​​Resizer纹理缩放器​​​​打开纹理缩放......
  • Unity插件 - MeshEditor(十一) 模型正弦扭曲特效
    更新日期:2020年4月23日。Github源码:​​​[点我获取源码]​​ 先上几张效果图:   OK,进入今天的正题吧,插一个正弦函数的话题进来: 首先,正弦函数曲线,如下:  在如上坐标系......
  • 【Unity】 HTFramework框架(三十九)UI的数据驱动模式,MVVM
    更新日期:2020年10月24日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​UI的数据驱动模式​​​​使用​​​​数据模型​​​​Bindabl......
  • Unity UGUI无限列表(Infinite List)
    更新日期:2020年10月16日。Github源码:​​​[点我获取源码]​​索引​​InfiniteList​​​​使用​​​​创建InfiniteListScrollRect​​​​InfiniteListScrollRect参数......
  • Unity - 粒子系统跟随路径移动
    对于最新版的粒子系统ParticleSystem,要让其跟随路径移动,无非就是借用其自身的API直接为每个粒子设置速度。看一下最终的效果图:编辑器为了能在场景中更方便的编辑路径,我们要......
  • 【Unity】 HTFramework框架(三十七)Inspector自定义序列化检视器
    更新日期:2020年8月21日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​Inspector自定义序列化检视器​​​​使用​​​​Dropdown下拉......