关于 unity-dependency-injection
面向 Unity 开发者的依赖注入系统,让类通过抽象请求依赖,而不必了解提供者。它会在 Awake 时连接场景依赖,并记录缺失的提供者。
主要功能
- 01基于特性的注入
- 02面向接口的依赖
- 03Awake 时连接场景依赖
- 04注入诊断日志
适用场景
- 01解耦玩法类与具体实现
- 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.txtDIAttributes.cs.txtDIExample.cs.txt详细介绍
Unity 依赖注入(DI)
一个轻量级系统,用于满足 SOLID 中的“D”。类可以通过 [Inject] 请求依赖,而无需知道依赖由谁提供。
核心功能
- 基于特性的注入:使用
[Inject]标记字段,使用[Provide]定义依赖来源。 - 聚焦接口:鼓励面向抽象编程,让系统可以灵活替换。
- 自动装配:在 Awake 时进行场景范围内的注入,确保依赖在 Start 之前就绪。
- 诊断日志:记录成功的注入,并在缺少提供方时发出警告。
核心文件(最多 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