Unity-GUI设计模式-基于模板模式的设计
上篇介绍MVC模式中存有遗留问题。
UI组件的获取,为什么在重写setParameter,而不是写在Start() 或 Awake()中。
继承树:
PageBase(showPage(),hidePage(),findElement(string str),abstract 抽象 setParameter())
↓
MainScenePage(abstract 抽象 setParameter() ,堆字典stackDic)
↓
MainSceneCustomPage(单例模式 重写setParameter()找到此页面的所有元素 )
public override void setParameter()
{
//基类中的函数:findElement<>
box_x = findElement<InputField>("box_x");
box_y = findElement<InputField>("box_y");
box_z = findElement<InputField>("box_z");
box_typeNum = findElement<InputField>("box_typeNum");
baseboard_width = findElement<InputField>("baseboard_width");
baseboard_len = findElement<InputField>("baseboard_len");
saveBtn = findElement<Button>("saveBtn");
Instance = this;
base.setParameter();
}
(1)子类会继承父类的Awake()等函数
由于在父类中,Awake()中setParameter()只是声明,内容为空。
若子类重写Awake(),将会覆盖掉父类的Awake().
所以父类是提供了模板,子类继承后,重写模板setParameter()做具体操作。