【发布时间】:2019-05-27 15:27:44
【问题描述】:
我正在与 unity 合作,但在这种情况下,这只是一个 c# 问题。有没有办法制作一个可以使用任何参数运行任何功能的计时器?我一直在使用委托将函数放入计时器类或协程中,但我不知道如何将任何参数放入委托中。
另外,有很多像我这样的问题,但不同之处(因为我找不到任何专门解决我要问的问题)是我希望能够运行一个函数,我想要的任何函数,不管经过指定的秒数后,它可能需要或不需要什么参数。本质上,我希望能够运行一个需要浮动时间和委托函数的协程。它等待 time 秒,然后运行委托函数。但是,如果需要,我需要能够为函数输入参数,所以如果我想运行一个简单的函数
Debug.Log(评论)
将注释作为字符串参数后,或
Debug.Log(数字)
将数字作为浮点参数后。
总而言之,我怎样才能等待 x 秒来执行函数 y,并将 y 更改为我想要的任何内容,而无需创建一组新的委托和函数?
如果这是一个重复的问题或易于访问的信息,我深表歉意,因为经过大约一个小时的搜索,我无法找到任何答案。
【问题讨论】:
-
Debug.Log()之所以有效,是因为它需要一个参数:一个对象。 C# 中的一切都是对象。那是你要找的吗?或者,也许您正在寻找通用类型?Func<T,U>等? -
如果参数量保持不变,使输入对象可以工作,但如果我想在之后使用两个参数执行 Debug.Log(comment + number) 怎么办?有什么方法可以让委托接受 0 到 100 个参数,所有这些参数都是对象?
-
@HackerMan,是的,它是possible。问题是在您的情况下,您必须传递对象数组,然后检查每个元素的类型,然后进行强制转换,然后最后做您想做的事情。你确定可以做任何事情的写作功能是你需要的吗?
-
不确定但也许你可以使用
Timer? docs.microsoft.com/en-us/dotnet/api/… -
您是否也尝试过this one?它似乎能够处理参数..
标签: c# unity3d timer delegates coroutine