Unite 2017-Scriptable Object (二)
事件架构
有一个这样的事件系统有几大好处:
可复用在任何项目中
独立了预制体
需要时才执行
便于调试
GameEventListener
运行时参数
现在依然有些单例下遇到的问题:
比如一个敌人管理器,管理了所有的敌人对象,他便要负责去追踪所有敌人对象
比如Player对象,以及要获取其追踪的敌人列表
造成的结果:
Race Condition(资源竞争)
极大可能会出现的一种情况便是,资源会被竞争,某些地方未被初始化时便被调用,最终导致获得空引用
Rigid singleton(刚性引用)
在制作测试场景的时候,需要把全部引用全都加入进来。
因此使用SO制作运行时类,可以解决上述问题。
别过多的使用Enum变量
因为枚举要在程序里做修改,因此我们动的程序部分越少,也就越不容易出错
很难做序列化操作,排序等操作。
很难保存一些额外信息
Asset Base System
设计原则:
系统在程序中,以So的方式在制作系统
可以直接拖拽引用到Inspector上
不需要代码重复检查
不要有直接绑定到场景上的引用。
