独立游戏开发(十四)-- 游戏UI及事件管理系统接入

上篇我们游戏的整体流程已经ok了,今天我们先把UI给放置进去。
其实我们就一个场景,所以与其说需要2个界面,还是可以1个界面搞定。
但为了适用性,还是用2个界面,一个开始,一个结算界面。
首先我们还是定义一个UIWindow基类,所有的界面都继承自此类。
然后通过UI管理类来开关界面。
UI框架网上有许多,我这里不再赘述了。
我们先来看看第一个界面,游戏开始界面:
在这里插入图片描述
就一个标题,一个开始按钮,标题做了一个动画,让它从上面落下来,直接用itween实现的。

_aniTween = _topObj.DOLocalMoveY(-210, 1.0f);
_aniTween.SetEase(Ease.OutBounce);

在这里插入图片描述
游戏结束也很简单,当病毒碰到我们的player的时候就游戏结束,右上角是我们的游戏分数。
这里重点说一下分数吧,因为要计算分数,所以引入了事件管理器。

public class EventManager : Singleton<EventManager>
{
    
    
    private EventDispatcher<int, object> mEventDispatcher;

    private EventDispatcher<int, object> GetDispatcher()
    {
    
    
        return mEventDispatcher ?? (mEventDispatcher = new EventDispatcher<int, object>());
    }

    public void AddEventListener(int eventId, Action<object> callback)
    {
    
    
        GetDispatcher().AddListener(eventId, callback);
    }

    public void RemoveEventListener(int eventId, Action<object> callback)
    {
    
    
        GetDispatcher().RemoveListener(eventId, callback);
    }

    public void DispatchEvent(int eventId, object obj = null)
    {
    
    
        GetDispatcher().DispatchEvent(eventId, obj);
    }
}
public virtual bool DispatchEvent(S _eventCode, T _param = default(T))
{
    
    
    if (eventDict.ContainsKey(_eventCode))
    {
    
    
        Action<T> callback = eventDict[_eventCode];
        if (callback != null)
        {
    
    
            callback(_param);
            return true;
        }
    }

    return false;
}

其实就是action方法。
然后在相应的地方添加事件:

private void AddListener()
{
    
    
    EventManager.Instance.AddEventListener(EventDefine.VirusDeadNtf, OnVirusDeadNtf);
    EventManager.Instance.AddEventListener(EventDefine.GameOverNtf, OnGameOverNtf);
}

UI其实也是串联我们游戏整体的一个环节,有个界面后,游戏的整个流程就更加明朗了。

传送门:独立游戏开发–索引

猜你喜欢

转载自blog.csdn.net/C_yuxuan/article/details/115099820