observable支持转换为yield对象
IEnumerator Delay1Second(){
yield return Observable.Timer(TimeSpan.FromSeconds(1.0f)).ToYieldInstruction();
}
observable支持转换为yield对象
IEnumerator Delay1Second(){
yield return Observable.Timer(TimeSpan.FromSeconds(1.0f)).ToYieldInstruction();
}
.select()是一个泛型,根据返回的值类型决定
unirx可以开启多条事件流,多个事件流可以通过merge进行事件流和并
button.interactable是一个布尔类型的值,设置为false则表示这个button不可以交互,即不可点击
reactiveproperty<>不能序列化
intReactiveproperty 可以进行序列化
drag事件需要成对出现有begindrag、drag、enddarg,否则会不生效
.first()获取第一个通过的事件,括号内可以添加条件进行过滤
.everyupdate()是一个事件源,每帧调用一次,会发送一个事件
Subscribe是事件接收者,接收everyupdate发送来的事件
.where()会把不符合括号内条件的事件过滤,符合则执行subscribe
事件本身可以是参数,但everyupdate本身没有参数,所以在where中不需要接收参数,括号内用_变量来表示不含参。
AddTo用于生命周期绑定,当这个函数的生命周期结束时就解绑删除
observable是一个事件流,可以调用unity的生命周期
单例(非线程安全)
private static PoolManager _instance;
public static PoolManager Instance{
get{
if(_instance==null){//判断是否已经创建过这个单例
_instance=new PoolManager();
}
return _instance;
}
}
private PoolManager(){}//单例的构造方法
public Init(){}
可以在StarCommand中初始化pool
创建配置文件不能直接new,需要使用
GameObjectPoolList poolList=ScriptableObject.CreateInstance<GameObjectPoolList>();
来创建
AssetDatabase.CreateAsset(pooList,"Assets/Framework/Resources/gameobjectpool.asset");
AssetDatabase.SaveAsset();
将配置文件保存至xxxx路径,使用saveAsset方法保存
创建一个类使之继承自ScriptableObject 表示把这个类变成可以自定义资源配置的文件
//索引器就是一种特殊的属性 实例属性
//索引器不允许 static
//索引器允许重载
链式编程
索引器
this关键字
增加拓展性和稳定性
多人协同开发中避免错误。
file.Exists()判断文件是否存在
跟编辑器有关的脚本放在Editor文件夹下
不用知道函数返回什么类型,可以使用typeof()定义一个用于接收该函数返回值的变量
声微饭否?
可以使Command继承自EventCommand,因为EC自带访问全局dispatch并且含有Ievent可以传递数据,不需要自己手动写