当脚本只有Awake方法,没有其他方法的时候,脚本会失活。
结论2:脚本对象的失活和激活不做用于Awake方法。
结论1:Inspector>外部赋值(外部调用)>Awake>OnEnable>Start
结论3:游戏物体每次从失活道激活状态,Awake与Start只会调用一次,OnEable会在再次激活游戏物体后调用,所以Initf方法可以放在OnEable中
当脚本只有Awake方法,没有其他方法的时候,脚本会失活。
结论2:脚本对象的失活和激活不做用于Awake方法。
结论1:Inspector>外部赋值(外部调用)>Awake>OnEnable>Start
结论3:游戏物体每次从失活道激活状态,Awake与Start只会调用一次,OnEable会在再次激活游戏物体后调用,所以Initf方法可以放在OnEable中
经过实验得
1:调用顺序:先左后右 外部赋值Inspector>Awake>OnEnable>Start
HideInInSpector可以把PUBLIC的方法和判断不显示在UNITY上面
Inpect先于AWAKE赋值
当同一个公共功能,在部分页面需要使用,其他页面不需要使用的情况下。可以增加探空检测。
Unity实例化是从上而下,父对象先于子对象。因此父对象实例化的时候,很多子对象awake方法里的对象还没有实例化,会造成报空的情况
疑问:
为何要判断ExitTween不为空即要倒播
疑惑
状态转换的方法
疑惑:
1:为何要定义basePanel
可以在GameManager里面封装方法来简化后续的代码量。
CanvasTransform = GameObject.Find("Canvas").transform;
public UIFacade(UIManager uiManager)
为何要穿uiManager
疑问
字典文件为何使用 IBasePanel
未解决
Loadpath+resourcePath
未解决
对象池问题,Containskey
对象池字典需要加深理解。
只有游戏物体才有对象池一说
其他音频等资源是没有对象池的。
xxx.pop怎么来的?
对象池问题未解决
为什么monsterpool.Count<=0来判断,因为可能存在多个项目
关于状态机的Private是否有必要,后续再复习。
上节HP问题
若定义一个父类来继承接口,子类继承父类,要同事显示子类和父类的方法的话。
可以在Start实例化中使用
Leblanc myHero=new Leblanc()
I/O
IHero myHero=new Leblanc()
意思就是需要使用子类对象来接受实例化的子类。
但是这样不方便。
另外解决方法。
使用重写方法。
父类改成Virtual void
子类改成override
这样便可以使用父类对象来接受了。
但是父类若定义了HP等数值,则需要以父类对象类接收,而不能以接口对象来接收
接口可以随时添加新方法,添加以后点实现接口即可
接口对拓展开放,对修改关闭。
接口只允许有方法,不允许有字段。如果添加血量,解决方法。可以添加一个基类,让后面的子类继承基类,具体如下
自己思考:适用于诸多平行功能