Unity中UI框架的编写6-OnEnter和OnPuse的开发以及多态的使用

本文介绍了如何在Unity游戏或应用中,通过自定义PopupPanelController脚本来实现面板的计时功能,包括OnEnter和OnExit方法的重写,确保时间连续计数。重点在于理解虚函数、override的使用以及UI组件的更新逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图

点击计时->再关闭面板->再次点击计时->发现时间继续上次的计算

在PopupPanelController的脚本中重写其基类的OnEnter和Onexit方法

PopupPanelController.cs:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;


public class PopupPanelController : NBasePanel {
    private Text text;
    private float startTime;
    private float curTime;


    private float exitTime = 0;

    private void Awake()
    {
        text = transform.Find("Image/Text").GetComponent<Text>();
    }
    void Start () {
		
	}
	
	void Update () {
        curTime = Time.time - startTime+ exitTime;
        text.text = "time:" +( curTime);
    }

    public void Close()
    {
        NUIManager.GetInstance().PopPanel();  
    }

    public override void OnEnter()
    {
        base.OnEnter();

        startTime = Time.time;
        canvas.alpha = 0;
        canvas.DOFade(1, 0.2f);
       
    }
    public override void OnExit()
    {
        base.OnExit();
        exitTime = curTime;
        canvas.alpha = 1;
        canvas.DOFade(0, 0.2f);
    }
}

这其中有几个注意点:

第一:你在重写基类的方法的时候,被重写的基类的函数要变成虚函数,即加一个virtual

第二:重写方法的时候前面要加一个override,并且在方法里面,如果你仍然要使用基类里面的你重写那个方法里面的功能,那么注意调用,调用的时候用的是base.xxx()方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值