上篇我们游戏的整体流程已经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其实也是串联我们游戏整体的一个环节,有个界面后,游戏的整个流程就更加明朗了。
传送门:独立游戏开发–索引