Unity 逻辑层通知UI 通过接口消除他们通信的switch判断

Posted 盘子脸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 逻辑层通知UI 通过接口消除他们通信的switch判断相关的知识,希望对你有一定的参考价值。

需求如何:  用户名字长度为2-12之间,  如果错误在界面上弹出一个消息框

写烂一点

public void PostRename(string name)
    {
        if (string.IsNullOrEmpty(name))
            return;

        if (name.Length > 2 && name.Length <= 16)
        {
            UI类.打开Box框("你用户输入错误")
            return;
        }
    }

写正常一点

public void PostRename(string name, string guid)
    {
        if (string.IsNullOrEmpty(name))
            return;

        if (name.Length > 2 && name.Length <= 16)
        {
            EventManager.Noifty("消息","你用户输入错误")
            return;
        }
    }

//界面这边的方法
    public void OnRenameResult(string msg)
    {
        if (string.IsNullOrEmpty(msg))
            return;
        else
            Show(msg);     //显示错误提示
        
    }

以上这种方式会因为底层的结果增多,导致上层增加 if 或 switch对结果判断  多余的监听函数,  我们只想打印消息, 为了不破坏层的概念, 我们要写很多代码. 

可以添加一个接口消除这些问题,我们只关心的输出信息, 至于上层如何输出 这个是他们的事情.

写好一点

输出接口:

public interface IDebugPop
{
    void Box(string msg);
}

public sealed class IPopUpBoxMa
{
    private static IDebugPop mI;
    public static IDebugPop I
    {
        get
        {
            if (mI == null)
                mI = new PopUpBox();

            return mI;
        }
    }

    private static void SetIPopUpBox(IDebugPop i)
    {
        mI = i;
    }

}

public class PopUpBox : IDebugPop
{
    public void Box(string msg)
    {
          Debug.Log(msg); // 输出UnityLog
          ShowMsg(msg);   //显示一个Box框来输出
    }
}

逻辑层: 

public void PostRename(string name)
    {
        if (string.IsNullOrEmpty(name))
            return;

        if (name.Length > 2 && name.Length <= 16)
        {
            IPopUpBoxMa.I.Box(“你用户输入错误”)
            return;
        }
    }

以上是关于Unity 逻辑层通知UI 通过接口消除他们通信的switch判断的主要内容,如果未能解决你的问题,请参考以下文章

外观模式

从业务逻辑向 UI 发布消息

一个项目中分为逻辑层、dao层、ui层、和实体层,数据库的操作

总结游戏框架与架构设计(Unity为例)

用Unity制作消除小游戏的素材资源精选

路由器接口配置与管理——2