https://github.com/eastlaugh/autumn-unity-framework
Autumn : Based on Unity, a lightweight, progressive, extensive and easy IOC Framework. 千秋 :面向Unity的轻量级、渐进式、开箱即用、可扩展的IOC容器框架。
https://github.com/eastlaugh/autumn-unity-framework
ioc unity
Last synced: 5 months ago
JSON representation
Autumn : Based on Unity, a lightweight, progressive, extensive and easy IOC Framework. 千秋 :面向Unity的轻量级、渐进式、开箱即用、可扩展的IOC容器框架。
- Host: GitHub
- URL: https://github.com/eastlaugh/autumn-unity-framework
- Owner: eastLaugh
- License: mit
- Created: 2023-03-14T09:14:42.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-12-04T08:55:48.000Z (7 months ago)
- Last Synced: 2025-12-07T16:26:38.589Z (7 months ago)
- Topics: ioc, unity
- Language: C#
- Homepage:
- Size: 112 KB
- Stars: 8
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
🍃🍃🍃
🍃🍃🍃
🍃🍃🍃
Autumn
千秋
面向Unity的轻量级、渐进式、开箱即用、可扩展的IOC框架。
- 轻量级:AutumnCore核心代码仅占约400行。
- 渐进式:在你需要的任何地方、任何时机引入并享用。
- 开箱即用:引入Autumn后,零配置,零代码,通过[特性]与框架交互。
- 可扩展:你可以自己编写插件,来改变Autumn组织Bean的方式。
# 使用方法
直接将本仓库的所有文件放入Unity中即可。Examples目录及目录下文件仅供参考,可删除。
# 案例/快速上手
```Autumn-Unity-Framework/Examples/*.cs```
# 生命周期

# API
Autumn的API极其精简。大部分常用API均为C#特性,无需代码。
## 用于类的特性
- [Bean]
将一个类标记为Bean。启动后,Autumn将维护该类型为单例。
注意:Autumn会自动实例化该单例,无需手动实例化。因此你需要确保你的类型没有带参数的构造函数、私有的构造函数。
- [Beans]
Beans是Bean的容量扩增。支持多个实例。
注意:Autumn不会自动实例化给类型,也不会维护单例性。所以被Beans标记的类型实例,需要通过调用Autumn API手动添加。
- [Config]
Config的本质是加装了插件Configurationer的Beans。[Config]适用于ScriptableObject,游戏启动时,会自动调取Resources目录下的ScriptableObject并作为Bean添加。在装配时,可以指定对应的ScriptableObject注入。例如,使用[Autowired("生产环境")]装配名为生产环境的ScriptableObject。
## 用于字段的特性
- [Autowired]
自动装配。游戏运行时,Autumn以字段的类型为依据,自动为被[Autowired]标记的字段注入已有的Bean。如果该类型有多个实例(Beans),Autumn会尝试用列表或数组注入字段。
- [Autowired(object msg)]
在自动装配时传入msg,用于与插件、Filter API通讯。例如,装配[Config]标记的类型时,使用[Autowired("生产环境")]会装配名称为生产环境的ScriptableObject。
## 代码
- using AutumnFramework;
这是必须的操作。你也可以自动引用命名空间,以VSCODE为例,输入[Bean]后,提示Bean不存在,这时按下 Ctrl + . 选择第一项,将自动引入AutumnFramework命名空间。
- this.Bean();
将自己装配进Autumn中。
Example
```
[Beans] //Autumn已经知道要管理System的多个实例啦
public class System:Monobehaviour{
void Start(){
this.Bean(); //告诉Autumn自己需要被管理
}
[Autowired] //在任何想注入的地方注入
private System[] systems;
}
```
如果你真的想零代码,连this.Bean();也不想输入,可以使用[Beans_ObjectAutoSetup]标记类型,它本质上是加装了插件的Beans,它会自动调用UnityEngine.FindObjectsOfType来查找。不过,不推荐使用,因为它是不可控的。
- this.UnBean();
将自己取消装配。