方法不改变外部变量 C#

Method is not changing outer variable C#

我想更改方法内的外部变量 (var1) 以便能够使用 getter 到 return 它的值。但不知何故 var1 只在函数内改变而不是全局的。如何全局更改方法内 var1 的值?

代码真的很简单:

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

public class PlayerMovement : MonoBehaviour
{
    private float var1 = 0f;

    void Update()
    {
        var1 = 5;
        print(var1);      // output: 5
    }

    public float GetVar1() 
    {  
        print(var1);
        return var1;     // output: 0
    }
}

更新方法由游戏引擎统一调用,getter在另一个class中调用。

调用getter的class在这里:

public class bullet : MonoBehaviour
{

    public PlayerMovement playerdata;
    private float output;



    void Update()
    {
        output = playerdata.GetVar1();
    
    }
}

如果您希望 bullet 实例的 output 为 5,则需要先在 playerdata 实例上调用 Update()

public class bullet : MonoBehaviour
{
    public PlayerMovement playerdata;
    private float output;

    void Update()
    {
        playerdata.Update();
        output = playerdata.GetVar1();
    }
}

我还注意到,除非 bullet 是不完整的代码,否则您不会创建 PlayerMovement class 的实例,因此您将得到 NullReferenceException