问题描述
对于我的游戏,您需要完成一个小游戏才能解锁能力。但我完全不知道如何去做,因为每当我加载主级别时,值都会被重置为 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:代码较大,但与攻击无关。
解决方法
每次加载场景时都会重新加载脚本,因此变量将进入“默认”状态
您可以通过使用DontDestroyOnLoad(this.gameObject);
由于每次重新加载场景时GameObject都不会被删除,因此会创建一个新副本来解决您应该使用单例的问题(查找它会很容易找到信息)
这两件事都会暂时解决问题,但是一旦您关闭游戏,一切都会恢复到原始状态。您应该使用某种方法来保存进度,PlayerPrefs 是一种非常简单的方法。