unity GameObject SetActive 保存到playerprefs
Unity GameObject SetActive save to playerprefs
我想保存每个单独游戏对象的活动状态,这样当您重新加载时,您收集的对象将不再存在。
我的代码:
public class PlayerController : MonoBehaviour {
public LevelManager levelManager;
public GameObject[] stardust; //array of stardust in level
public int isActive; //variable for amount of stardust collected
void Start()
{
isActive = PlayerPrefs.GetInt("stardust");
active();
}
void OnTriggerEnter(Collider other)
{
//Stardust
if (other.gameObject.CompareTag("stardust"))
{
isActive = 1;
PlayerPrefs.SetInt("stardust", isActive);
active();
//other.gameObject.SetActive(false);
levelManager.score++;
levelManager.setScoreText();
audioSource.Play();
PlayerPrefs.SetInt("score", levelManager.score);
}
}
void active()
{
if (isActive == 0) //if none are collected
{
for (int i = 0; i < stardust.Length; i++)
{
stardust[i].SetActive(true); //make all visible
}
}
if (isActive == 1) //first one collected
{
stardust[0].SetActive(false);
stardust[1].SetActive(false);
stardust[2].SetActive(false);
}
}
}
如您所见,它将所有对象设置为非活动状态,我如何单独检查每个对象?
我在所有星尘的播放器偏好设置中使用一个键。我应该为每个星尘设置一个键吗?
我尝试在 EventTrigger 下通过标签比较每一个,每一个都有自己的方法检查每一个并将 Active 单独设置为不成功
嗨,柯斯汀维萨吉,
它不适用于单键,玩家偏好值将被覆盖,您必须为每个星尘创建每个键。
我想保存每个单独游戏对象的活动状态,这样当您重新加载时,您收集的对象将不再存在。 我的代码:
public class PlayerController : MonoBehaviour {
public LevelManager levelManager;
public GameObject[] stardust; //array of stardust in level
public int isActive; //variable for amount of stardust collected
void Start()
{
isActive = PlayerPrefs.GetInt("stardust");
active();
}
void OnTriggerEnter(Collider other)
{
//Stardust
if (other.gameObject.CompareTag("stardust"))
{
isActive = 1;
PlayerPrefs.SetInt("stardust", isActive);
active();
//other.gameObject.SetActive(false);
levelManager.score++;
levelManager.setScoreText();
audioSource.Play();
PlayerPrefs.SetInt("score", levelManager.score);
}
}
void active()
{
if (isActive == 0) //if none are collected
{
for (int i = 0; i < stardust.Length; i++)
{
stardust[i].SetActive(true); //make all visible
}
}
if (isActive == 1) //first one collected
{
stardust[0].SetActive(false);
stardust[1].SetActive(false);
stardust[2].SetActive(false);
}
}
}
如您所见,它将所有对象设置为非活动状态,我如何单独检查每个对象?
我在所有星尘的播放器偏好设置中使用一个键。我应该为每个星尘设置一个键吗?
我尝试在 EventTrigger 下通过标签比较每一个,每一个都有自己的方法检查每一个并将 Active 单独设置为不成功
嗨,柯斯汀维萨吉, 它不适用于单键,玩家偏好值将被覆盖,您必须为每个星尘创建每个键。