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


前言

休闲酷跑的界面显示

`

一、金币显示

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();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值