Unity-GUI设计模式-基于MVC的UI设计模式

Unity-GUI设计模式-基于MVC的UI设计模式

1.写在前面的,很重要的一点:基于MVC的UI设计模式

  Model(模型)提供数据以及对数据的操作。
      创建一个主ModelManager管理多个不同的Model,
      每个Model提供操作自己数据的函数,统一在ModelManager里操作。
   View(视图):ui相关的数据,以及对ui相关数据的操作,为GameController注册事件。
      创建一个主ViewManager管理多个不同的View,
      每个View提供操作自己的控件做出相应的逻辑操作的函数,事件都在ViewManager里注册。
   Controller(控制器):当ui上的控件触发了注册的事件时,对GameView和GameModel做出相应的逻辑回应。
        对于controller,一样创建主的ControllerManager来管理多个不同的controller。

“V”:表示view
嗯,保存着Page中的各个元素。
先画一下继承树:
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();
    }

“C”:表示control
程序会做出很多个Action,所以写一个Action来管理这些。

【 ************** 例如:CustomController*********************
目的:更新盒子数据XML
将在此脚本写监听按钮onClickSaveBtn(),
来调用已经封装好的更新XML函数updateBoxDataInXML()
***********************************************************************】

Unity-GUI设计模式-基于MVC的UI设计模式_第1张图片

 MainSceneCustomPage page;

    private void Start()
    {

        page = (MainSceneCustomPage)MainScenePage.stackDic["MainSceneCustomPage"];
        page.saveBtn.onClick.AddListener(onClickSaveBtn);


    }

    public void onClickSaveBtn()
    {
        string box_x = page.box_x.text + "";
        string box_y = page.box_y.text + "";
        string box_z = page.box_z.text + "";
        string box_typeNum = page.box_typeNum.text + "";
        string baseboard_len = page.baseboard_len.text + "";
        string baseboard_width= page.baseboard_width.text + "";


        ConfigFile.updateBoxDataInXML(int.Parse(box_x), int.Parse(box_y), int.Parse(box_z), int.Parse(box_typeNum));


    }

你可能感兴趣的:(Unity学习笔记,Unity-GUI设计模式)