U3D物品系统之装备[2]

    我在思考一个问题

    如果采用pureMVC去注册面板事件的话,就会有很鸡肋的问题,一个面板里面会有很多小的面板,小的面板里面又有很多各种事件。
    那么按照UI模块划分,V去注册事件的话,就会很不好用,而且效率也不过。
    所以,对已mono的合理搭配是很重要的。
    例子:
           public override void init(GameObject obj)
            {
                this.panelObj = (GameObject)GameObject.Instantiate(obj);
                base.init(panelObj);
                new PanelHandler().RootHandler(panelObj);
                errorObj = panelObj.transform.FindChild("ErrorPanel").gameObject;
                loginBtn = panelObj.transform.FindChild("Submit").gameObject;
                registerBtn = panelObj.transform.FindChild("Register").gameObject;
                UIEventListener.Get(loginBtn).onClick = onSubmitClick;
                UIEventListener.Get(registerBtn).onClick = onRegisterClick;
            }
    对于简单的登陆注册来说。事件相对单一简单,所以使用FindChild来找到需要监听的按钮事件,是可以接受的,但是一旦面板层次比较多的话,
    那就需要用很多的FinChild,同时一旦某个你需要监听的事件,层次较深,那可能就要用很多的FindChild,本身这种方式效率就不高,如此,就会是
    画蛇添足了。。。。
    所以,既然mono可以提供很好的方式,那么就不能古板必须什么都得分离,划分什么的,不妨在MONO与View再分一层,M – C – V  – U。
     
    那么就分析一下两者之间靠什么联系。
     
    对于V来说,不是说所有的事件都会改变整个游戏的数值影响,那么说明,那个事件是指局限于那个面板的范畴,那就说明那个只是U他自己的事情,并不需要MVC来为它服务。
     
    那么对于U来说,我的数据哪里来,V到U的一步必须经过的操作就是,V必须去M的那拿数据过来,然后存起来,当需要把U实例出来的时候,把数据全部初始化好(一般是先数据,再显示,因为,如果数据没到,U直接出来的话
    会出现,空面板,然后慢慢出来的感觉)。
     
    那么,如果U的事件,会直接对V整个游戏产生即时影响,那么这个事件就可能直接跟V联系,因为,它不再是面板内的事。V需要把它造成的影响直接发出去,然后其他的事件就得立马获得消息,并实时更新。
     
    到这里,其实这些都是我个人的分析,我并不知道这样的想法好不好,或者画蛇添足,因为我并没在使用mono上有一个很好的结构或者模块划分思想,毕竟也是没有经验。其实说到这,很希望有大神,可以指教一下,mono在处理各种事件有什么的好的模块或者结构上的思想,希望最后可以结合起来,得出一个高效且方便的设计模式。
     
    分割线【2015.1.6】
    需找好的MONO模块划分方案中…….
     
    有帮助就分享一下吧!

    转载请注明:少狼 – 敬畏知识的顽皮狗 » U3D物品系统之装备[2]

    喜欢 1

*

还没有人抢沙发呢~