Thr*_*dil 0 c# methods unity-game-engine
我遇到了一个让我感到困惑的问题,我无法解释。这里是:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望计时器在这里增加......但它不会增加。但是,一旦我放弃 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;
}
}
Run Code Online (Sandbox Code Playgroud)
正如下面的评论中所指出的,您不需要显式参数,因为它与方法所属的类型相同。