这里的这个bug是由于ViewBase里Show已经调用UpdateFun方法,同时又在下面又调用了UpdateFun方法导致该操作卡死在对象池里,这边补上base.Show刚好能解决调用的时序问题可以解决,但是等于多调用了一次UpdateFun方法,不如将SwitchPlayer里的show方法删除,交给ViewBase来管理
这里的这个bug是由于ViewBase里Show已经调用UpdateFun方法,同时又在下面又调用了UpdateFun方法导致该操作卡死在对象池里,这边补上base.Show刚好能解决调用的时序问题可以解决,但是等于多调用了一次UpdateFun方法,不如将SwitchPlayer里的show方法删除,交给ViewBase来管理
ViewBase中在Show方法中调用UpdateFun后可以将SwitchPlayer中Show方法删除,这段代码多余
这里按着视频来的话应该会有一个栈内存溢出的bug,需要删除ViewBase里的InitUpdateObjects方法并将_viewUpdates像_viewInits一样的方式在InitSubView内初始化以及调用InitViewInterface方法。
5:40修改了PropertyItem中UpdateData方法里的GetPropertyKeys,将planeId删除,这个操作导致update里的planeId参数不被调用,其实可以删掉,但是后面没有删除影响不大
这边数据上不来是因为PlayerPrefsMemory中GetString()方法没有被调用,需要在IDataMemory中配置GetString接口,并在DataMgr中做接口转接后,在PropertyItem中将对应Text赋值语句的DataMgr.Single.Get<string>(key)改为DataMgr.Single.GetString(key)
···
获取类型转换器:
Type type=typeof(T)
var converter =TypeDescriptor.GetConverter(type);
[SerializeField ] 可序列化
‘’自动挂载脚本的方式:
1.通过类型名挂载脚本
预制体名称和脚本名称需为一致;
1 单例模式 只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等等
2 单例的缺点 就是不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。
用单例模式,就是在适用其优点的状态下使用
SerializeField 特性
temp.AddComponent(type);
FindObjectofType<>获取场景中类对象
DontDestroyOnLoad(gameObject)不销毁对象
Destroy(gameObject)销毁游戏对象
单例一般要用 C# class,mono可能会有问题
Image 的Raycast Target属性不需要检测射线就设置成false
添加Editor文件夹u3d打包会不打包这个文件夹里的内容
AssetPostprocessor负责资源导入操作
TextureImporter importer = (TextureImporter) assetImporter;
importer.textureType = TextureImporterType.Sprite;
//导入图片资源自动为精灵类型
Read/Write Enabled true会加大内存在用量
Generate Mip Maps true会自动生成低像素图片,3d游戏中会有好处,2d游戏不建议使用,打包会出现图片模糊的现象
//索引器就是一种特殊的属性 实例属性
//索引器不允许 static
//索引器允许重载
链式编程
索引器
this关键字