c# - 在方法中增加计时器不起作用 - 但在不使用方法的情况下工作
问题描述
我遇到了一个让我困惑的问题,我无法解释。这里是:
public class Test : MonoBehaviour
{
private float _myTimer = 0;
// Update is called once per frame
void Update()
{
StartTimer(_myTimer);
//_myTimer += Time.deltaTime;
}
private void StartTimer(float timer)
{
timer += Time.deltaTime;
}
}
我希望计时器在这里增加......但它不会增加。但是,只要我放弃 StartTimer() 方法并像注释中一样增加它,计时器就会增加。为什么是这样?
提前致谢!特林地尔
解决方案
您正在按值传递参数。当该方法对副本进行操作时,所做的任何更改都将被丢弃。
如果将其更改为 ref 参数,您的代码将按预期工作。
public class Test : MonoBehaviour
{
private float _myTimer = 0;
// Update is called once per frame
void Update()
{
StartTimer(ref _myTimer);
//_myTimer += Time.deltaTime;
}
private void StartTimer(ref float timer)
{
timer += Time.deltaTime;
}
}
正如下面评论中所指出的,您不需要显式参数,因为它是方法所属类型的成员。
推荐阅读
- machine-learning - 将编码分别应用于训练和测试数据
- ansible - 如何在ansible中的json中合并具有相同键的值
- javascript - 在我的 React 发送电子邮件表单中重新渲染
- bash - 将命令的输出写入 csv 文件的特定列,unix
- ubuntu - 等待 VirtualBox 的共享文件夹挂载的 systemd 目标
- sockets - Socket-IO 库中的版本是否重要?
- sql - 如何在 PostgreSQL 的数组中添加不重复的项目?
- c - 以升序显示两个整数输入之间的所有数字的 C 程序
- javascript - 剑道格子每格动态计算题
- docker - kubernetes,容器因未知原因在 SIGQUIT 信号上崩溃