一开始我想不断传递 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