0

对于我的游戏,你需要完成一个小游戏来解锁能力。但是我实际上不知道该怎么做,因为每当我加载主级别时,该值都会重置为 false。代码播放器运动:

static bool FistAttackEnabled;

void Update ()
{
        if (FistAttackEnabled == true)
        {
            if (Input.GetMouseButtonDown(0))
            {
                Debug.Log("Attack");
                PlayerMovement.SetFloat("Attacking", 1f);
                HitArea.SetActive(true);
            }
        }
}

代码小游戏:

    void Start()
    {
        FistAttackEnabled = Player.GetComponent<Player_Movement>().FistAttackEnabledPortable;
    }
    void Update()
    {         
            if (SheepsAmountGuess == NeededAni)
            {
                FistAttackEnabled = true;
            }
    }

但这不起作用。我尝试制作一个可移植的 bool ( FistAttackEnabledStatic = FistAttackEnabled) 因为你不能跨脚本传输静态 bool 值,但这也不起作用。有谁知道怎么做?

PS:代码更大,但与攻击无关。

4

1 回答 1

0

每次加载场景时,脚本都会重新加载,因此变量将进入其“默认”状态

您可以通过usign避免破坏游戏对象DontDestroyOnLoad(this.gameObject);

由于每次重新加载场景时都不会删除游戏对象,因此将创建一个新副本来解决您应该使用单例的问题(查找它,您会很容易找到信息)

这两件事都会暂时解决问题,但是一旦您关闭游戏,一切都会恢复原状。您应该使用一些方法来保存进度,PlayerPrefs 是一种非常简单的方法。

于 2021-07-08T14:12:09.910 回答