
Zenject框架
文章平均质量分 92
inspironx
这个作者很懒,什么都没留下…
展开
-
01.Unity Zenject入门到掌握(Zenject简介和环境配置)
Zenject 框架简介Zenject是一个轻量级的高性能依赖注入框架,专门针对Unity构建。它可以用来将Unity应用程序的代码库转换为具有高度分段职责的松散耦合部分的集合。然后,Zenject可以以许多不同的配置将各个部分粘合在一起,从而使您能够以可伸缩和极其灵活的方式轻松地编写、重用、重构和测试代码。Zenject 作者简介一位来着Github的大神Steve Vermeulen,他...原创 2018-12-03 16:04:00 · 9745 阅读 · 0 评论 -
02.Unity Zenject入门到掌握(从Zenject的HelloWorld开始)
大纲A.官方示例代码B.代码运行结果C.代码解析D.代码文字说明E.Zenject架构个人解析F.Zenject社区A.官方示例代码using System.Collections;using System.Collections.Generic;using UnityEngine;using Zenject;namespace zenject.hellowrold{ pu...原创 2019-07-29 01:14:06 · 1695 阅读 · 1 评论 -
03.Unity Zenject入门到掌握(Zenject的注入方式Injection)
文档大纲注入方式说明Zenject的4种注入方式a.构造函数注入b.成员变量注入c.属性注入d.方法注入注意事项推荐使用方式总结一下Zenject社区注入方式说明Zenject是一个类引用管理工具,当你声明了一个类绑定到了容器里面以后,你在其他的敌方使用需要按照约束的方式,这样便可以引用到你已经绑定到容器的类Zenject的4种注入方式构造函数注入、成员变量注入、属性注入和方法注入a....原创 2019-08-17 01:27:55 · 2266 阅读 · 0 评论 -
04.Unity Zenject入门到掌握(Zenject的绑定实例Bind)
文档大纲绑定说明概念过程示例绑定格式字段表单说明构建方法(Construction Methods)33. FromSubContainerResolve - 通过子容器实例对象Zenject社区绑定说明概念所有基于DI(dependency injection)框架都是将类型绑定到实例。在Zenject中,通过绑定到容器来映射引用关系;但容器应该知道通过什么方式来实例化已经绑定的对象,通...原创 2019-08-18 02:40:45 · 2881 阅读 · 0 评论 -
05.Unity Zenject入门到掌握(Zenject的安装器Installer)
什么是安装器可以组织收集为每个子系统绑定相关内容,并且可以将其分组绑定到一个可复用的对象内容里面管理;在Zenject中,这些可以复用物体称作‘installer’安装器,以下示例:public class FooInstaller : MonoInstaller{ public override void InstallBindings() { Contai...原创 2019-08-18 20:10:04 · 1655 阅读 · 0 评论 -
06.Unity Zenject入门到掌握(Non-MonoBehaviour编写逻辑)
Non-MonoBehaviour说明通常我们编写较为复杂一些的逻辑,比如战斗逻辑,会依赖Update()来处理动态的数据;这样会导致场景物体或者Prefab需要附加Component组件,当Prefab修改或者场景有变动的时候,有可能美术把脚本给忘记附加了导致运行不正确;当项目做大了以后,这些附件的脚本会变成一个负担,需要专门有人来处理这些繁琐的工作;使用Non-MonoBehaviour的...原创 2019-08-19 16:24:21 · 1000 阅读 · 0 评论 -
07.Unity Zenject入门到掌握(引用对象关系验证)
摘要当使用Zenject来编写项目的时候,如果要进行测试;一般是直接运行看结果,日志或者抛出异常信息;当项目内容做复杂了以后,模块划分出去了,会导致你前面的工作人员的功能没有做完,进不了你所要测试的功能里面来;这个时候需要修改程序流程来达到一个测试的效果,而如果流程修改复杂的话,你当下无法进行测试;Zenject提供了便捷的验证关系功能验证有什么用验证不是一次测试,并不能验证具体的错误信息;...原创 2019-08-20 16:42:39 · 807 阅读 · 0 评论 -
08.Unity Zenject入门到掌握(场景中脚本绑定)
摘要当我们场景中有Mono脚本,Zenject框架里面的其他类有引用到这个Mono脚本的时候,我们可以将这个Mono的实例直接绑定到框架里面,安装器也是Mono附加,在安装器里面声明就好public class Foo : MonoBehaviour{}public class GameInstaller : MonoInstaller{ public Foo foo; ...原创 2019-08-21 14:38:16 · 1790 阅读 · 0 评论 -
09.Unity Zenject入门到掌握(建议和提示)
不要使用GameObject.Instance方法来实例化游戏物体如果你想实例化一个Prefab,Prefab上的脚本有Inject的时候,推荐使用factory来处理生成新游戏物体;或者使用DiContainer里面提供的静态方法InstantiatePrefab()Container.InstantiatePrefab(prefab, parentTransform);使用这样统一的方...原创 2019-08-22 15:51:41 · 1462 阅读 · 0 评论 -
10.Unity Zenject高级编程(使用工厂动态创建物体)
前言新手使用Zenject框架经常会遇到一个头痛的问题,怎么样在游戏启动以后动态创建新物体;假如你做一个游戏需要生成很多的敌人(Enemies),然后你将会去构建新的敌人实类,并且要确保这些敌人实类会注入到框架里面,建议使用工厂来处理摘要DI框架重要的部分是储备使用容器,严格的遵循"Composition Root Layer"组合跟节点层;DiContainer容器类包括自身的自动引用,因...原创 2019-09-01 16:07:40 · 1430 阅读 · 0 评论 -
11.Unity Zenject高级编程(DiContainer方法集)
前言在正常的绑定基础之上,也有一些其他的方法你需要联系到一块使用DiContainer;例如你自定义一个工厂,你有可能直接调用DiContainer.Instantiate方法来实例化对象或者其他类库(比如网络库),你需要调用DiContainer.Inject手动注入DiContainer总是会添加自己到类里面,你可以在任何类里面调用到它;DiContainer.Instantiate这...原创 2019-09-02 06:13:50 · 1395 阅读 · 0 评论 -
12.Unity Zenject高级编程(SignalBus通信)
摘要MemoryPool、Factory、SignalBus是Zenject高级编程必须掌握的3大模块,分别负责内存优化、创建对象、内部通信;单模块的内容也非常的丰富,都是独立了文档来单独作介绍;这些也是Zenject魅力所在。为什么要使用通信来编程指定两个类A和B通信,通常来说,你会选择:从B里面直接调用A的方法,这样B是强制依赖A,违背软件设计开闭原则定义一个回调在A里面,这样B也...原创 2019-09-03 17:49:11 · 1173 阅读 · 0 评论 -
13.Unity Zenject高级编程(MemoryPools内存池)
示例使用Unity开发游戏使用适当的内存管理非常重要,如果你想制作流畅的游戏在手机上面运行;根据运行的平台和制作的游戏类型不同,对于尽可能的避免开辟不需要的堆内存非常的重要;最有效的途径的使用内存池,代码示例public class Foo{ public class Factory : PlaceholderFactory<Foo> { }}pub...原创 2019-09-05 11:34:56 · 1714 阅读 · 2 评论 -
14.Unity Zenject高级编程(Sub-Containers子容器)
简介一些情况下,使用多个容器在同一个应用里面非常有帮助;例如,如果你创建一个文字处理,你可能需要多个子容器为每个标签代表一个隔离的文档;这种处理方式,你可能使用子容器绑定一堆类成AsSingle(),并且这些如果全部是单例容器可以容易相互引用;然后你可能为每个文档实例多个子容器,每个子容器拥有唯一的实例,所有的类在每个指定文档处理另外一个实例你可能设计一个开放世界的太空船游戏,你可能想每个太空...原创 2019-09-06 21:09:15 · 1033 阅读 · 0 评论 -
15.Unity Zenject高级编程(WritingAutomatedTest测试用例)
Writing Automated Unit Tests and Integration Tests当你使用DI正确编写低耦合的代码,非常容易隔离指定区域的代码,基本意图是运行测试,在不需要启动你项目的前提下;这些可以从用户派生的测试框架或者使用NUnit自动化测试;自动化测试对于持续和服务器交互特别有帮助;这允许你自动运行测试无论何时有新的提交到版本控制;有三种基本的测试帮助类包含在Zenj...原创 2019-09-07 17:54:44 · 859 阅读 · 0 评论 -
16.Unity Zenject高级编程(DecoratorBindings装饰绑定)
Decorator Bindings另外Zenject的特性功能是可以使用装饰模式来设计绑定;允许你更简单的实现装饰模式Example作为一个示例,让我们说一个类包含了统计指定敌人在我们的游戏里面,我们有两个敌人(兽人和恶魔):public interface IEnemyStats{ float Damage { get; } floa...原创 2019-09-08 02:34:14 · 849 阅读 · 3 评论