[Unity] GameFramework 学习记录 6:计时器

一开始我想不断传递 Delegate

    public class TimerHandler
    {
   
        private float _elapsedTime;

        public float ElapsedTime
        {
   
            get => _elapsedTime;
            set
            {
   
                if (value >= Duration)
                {
   
                    if (CallBack != null) CallBack(Args);
                }
            }
        }

        private float _duration;
        public float Duration => _duration;

        private bool _isLoop;
        public bool IsLoop => _isLoop;
        
        private Delegate _callback;
        public Delegate CallBack => _callback;

        private object[] _args;
        public object[] Args => _args;
        
        public TimerHandler(float duration, bool isLoop, Delegate callback, params object[] args)
        {
   
            _duration = duration;
            _isLoop = isLoop;
            _callback = callback;
            _args = args;
        }
    }

这样是不对了,问了别人,别人说我要定义 delegate 类型

    public class TimerHandler
    {
   
        private float _elapsedTime;

        public float ElapsedTime
        {
   
            get => _elapsedTime;
            set
            {
   
                if (value >= Duration)
                {
   
                    if (CallBack != null) CallBack(Args);
                }
            }
        }

        private float _duration;
        public float Duration => _duration;

        private bool _isLoop;
        public bool IsLoop => _isLoop;

        public delegate void CallBackDelegate(params object[] args);

        public CallBackDelegate Callback;
        
        private object[] _args;
        public object[] Args => _args;
        
        public TimerHandler(float duration, bool isLoop, CallBackDelegate callback, params object[] args)
        {
   
            _duration = duration;
            _isLoop = isLoop;
            Callback = callback;
            _args = args;
        }
    }

其中 if (CallBack != null) CallBack(Args); 中的 CallBack 报错,说是 Cannot resolve symbol ‘CallBack’
但是我明明已经定义了

我在别的地方试验:

        public TimerHandler(float duration, bool isLoop, CallBackDelegate callback, params object[] args)
        {
   
            _duration = duration;
            _isLoop = isLoop;
            Callback = callback;
            _args = args;
            Callback(args);
        }
    }

这之中的 Callback(args); 就没有报错,怪

最后写成

Assets/GameMain/Scripts/Utility/ListRemovableInForEach.cs

using System;
using System.Collections;
using System.Collections.Generic;

namespace OaksMayFall
{
   
    public class RList<T>
    {
   
        private ListRemovableInForEach<T> collection = new ListRemovableInForEach<T>();
        
        public IEnumerator GetEnumerator()
        {
   
            return collection;
        }
        public void Remove(T t)
        {
   
            collection.Remove(t);
        }
    
        public void Add(T t)
        {
   
            collection.Add
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值