项目实训(七)休闲酷跑游戏之界面显示


前言

休闲酷跑的界面显示

`

一、金币显示

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();
    }

猜你喜欢

转载自blog.csdn.net/qq_45856546/article/details/125175380