调用NextLevel
方法时,整数gemsCollected
不会增加其值。
控制台显示该值仅变为"0";1〃;一瞬间。如何使脚本存储添加的值,而不是重置它?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class gemTaken : MonoBehaviour
{
public GameObject gem1;
public Transform playerNearCheck01;
public float playerCheckRadius01;
public LayerMask playerLayer;
private bool takenByPlayer;
public int gemsCollected;
void Update()
{
Debug.Log(gemsCollected);
takenByPlayer = Physics2D.OverlapCircle(playerNearCheck01.position, playerCheckRadius01, playerLayer);
if (takenByPlayer)
{
NextLevel(); //calls method
gemsCollected ++;
}
}
void NextLevel() //method
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex +1 );
}
}
如果您将gemsCollected变量声明为"静态";,它将在整个场景中保持其价值。
此外,为了保持它的公开性,您可以制作这样一个getter方法:
public int GetGemsCollected() => gemsCollected;
如果你不熟悉语法,这与此相同:
public int GetGemsCollected()
{
return gemsCollected;
}
然后,只要需要gemsCollected变量,就可以调用该方法。
如果可行,请告诉我。
Vlad