mcpField
U
unity-dependency-injection

unity-dependency-injection

github.com/muharremtozan开发1751 次安装22 周前更新
代码仓库

关于 unity-dependency-injection

面向 Unity 开发者的依赖注入系统,让类通过抽象请求依赖,而不必了解提供者。它会在 Awake 时连接场景依赖,并记录缺失的提供者。

主要功能

  1. 01基于特性的注入
  2. 02面向接口的依赖
  3. 03Awake 时连接场景依赖
  4. 04注入诊断日志

适用场景

  1. 01解耦玩法类与具体实现
  2. 02在 Unity 场景中提供依赖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/muharremtozan/unity-agent-skills --skill unity-dependency-injection

安装后在 Claude Code 中输入/unity-dependency-injection确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/code/
DependencyInjector.cs.txt
DIAttributes.cs.txt
DIExample.cs.txt

详细介绍

Unity 依赖注入(DI)

一个轻量级系统,用于满足 SOLID 中的“D”。类可以通过 [Inject] 请求依赖,而无需知道依赖由谁提供。

核心功能

  1. 基于特性的注入:使用 [Inject] 标记字段,使用 [Provide] 定义依赖来源。
  2. 聚焦接口:鼓励面向抽象编程,让系统可以灵活替换。
  3. 自动装配:在 Awake 时进行场景范围内的注入,确保依赖在 Start 之前就绪。
  4. 诊断日志:记录成功的注入,并在缺少提供方时发出警告。

核心文件(最多 3 个)

  • DIAttributes.cs.txt:包含供编译器使用的标记特性。
  • DependencyInjector.cs.txt:负责在场景中查找并装配依赖的引擎。
  • DIExample.cs.txt:展示如何解耦 Hero 与 AbilitySystem。

用法

1. 定义接口
public interface IWeapon { void Fire(); }
2. 提供实现
public class PlasmaRifle : MonoBehaviour, IWeapon {
    [Provide] public IWeapon GetWeapon() => this;
    public void Fire() { /* ... */ }
}
3. 注入到客户端
public class Player : MonoBehaviour {
    [Inject] private IWeapon currentWeapon;
    void Start() => currentWeapon.Fire();
}
4. 设置

在场景或持久化预制件中放置一个 DependencyInjector 组件。

评论

支持 Markdown