前言
休闲酷跑的界面显示
`
一、金币显示
1、将金币图片导入到工程中,并设置好精灵图
2、制作金币预设
使用spriteRender来显示金币
给金币添加碰撞体,勾选Is Trigger,因为金币与角色不需要发生真实的物理碰撞
金币阵列
二、游戏界面显示
逻辑与UI之间的控制,需要制作一个事件管理器,通过事件来降低逻辑与UI之间的耦合度
包括订阅事件与时间的触发,在该游戏中,订阅和触发玩家的跳跃事件以及吃金币事件,并进行注销
1.主界面预设
订阅事件(注册事件):
public void Regist(string evt, MyEventHandler handler)
{
if (handler == null)
return;
if (listeners.ContainsKey(evt))
{
listeners[evt] += handler;
}
else
{
listeners.Add(evt, handler);
}
}
注销事件:
和订阅事件一样,仍需要考虑反注册的问题
public void UnRegist(string evt, MyEventHandler handler)
{
if (handler == null)
return;
if (listeners.ContainsKey(evt))
{
listeners[evt] -= handler;
if (listeners[evt] == null)
{
listeners.Remove(evt);
}
}
}
触发事件:
public void DispatchEvent(string evt, params object[] objs)
{
//try
{
if (listeners.ContainsKey(evt))
{
MyEventHandler handler = listeners[evt];
if (handler != null)
handler(objs);
}
}
}
2.编写GameMainPanel.cs脚本
创建GameMainPanel.cs脚本,挂到GameMainPanel预设上。
这个脚本主要做两件事:
1 点击跳跃按钮,抛出跳跃事件;
2 监听加金币事件,当收到加金币事件时,同步金币数值到UI上。
private void Awake()
{
EventDispatcher.instance.Regist(EventNameDef.EVENT_ADD_COIN, OnEventAddCoin);
jumpBtn.onClick.AddListener(() =>
{
EventDispatcher.instance.DispatchEvent(EventNameDef.EVENT_JUMP);
});
}
private void OnDestroy()
{
EventDispatcher.instance.UnRegist(EventNameDef.EVENT_ADD_COIN, OnEventAddCoin);
}
private void OnEventAddCoin(params object[] args)
{
coinLbl.text = ((int)args[0]).ToString();
}