栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

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

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Unity】 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字段,其他同理。

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(状态、参数、数据);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900688.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号