里氏替换原则:子类完全继承父类的所有东西,既父类无private
里氏替换原则:子类完全继承父类的所有东西,既父类无private
高层模块调用低层模块解决问题
通过继承实现开闭原则。抽象出一个敌人父类,所有敌人都继承它。当新增一个敌人时,只需要继承父类,不再需要更改其他代码。
编程即抽象,谁想象力丰富,谁写的代码简洁。
迪米特法则是复用的基础,也是中介存在的理由。
gameobject上挂在的脚本:
Korgrapher
Audio Source
Simple Music Player
文本在unity中是textasset类型
d'd
获得类型:
System.Type type = typeof(T)
1.对泛型T的约束
where T class,new()
2. 栈的使用
1. 单例基类的设计,
对泛型T的约束
where T:new()
1. 通过代码生成AB包配置表,表中记录着所有资源所在的包名以及与其它包体的依赖关系。
2. 然后优化配置表:把一些永远不可能去动态加载的资源从配置表中移除,只记录可能会动态加载的东西。
3.通过一个List来过滤。
打包时剔除冗余
删除无用的包名(改名或者没有使用)
设置AB包 --> 打包 -->清除AB包设置
1.编辑器扩展时,要使用[MneuItem("...")]添加到工具栏中的前提是,必须写的是一个静态方法。
2.API打包:
buildPipeline.buildAssetBundels(...,..,.EditorUserBuildSettings)
就近原则
程序集之间的引用关系
拖拽指定的方式 和 resource.load的方式都不是推荐的资源加载方式,只有小规模项目时可以使用。
大项目推荐用 、assetBundel加载方式
SerializeField 特性
temp.AddComponent(type);
FindObjectofType<>获取场景中类对象
DontDestroyOnLoad(gameObject)不销毁对象
Destroy(gameObject)销毁游戏对象
单例一般要用 C# class,mono可能会有问题