我为我的应用创建了一个设置页面,您可以在其中打开或关闭滑块。 如果打开第一个开关,则布尔isMale设置为true。如果将其关闭,则bool isMale设置为false。 我正在另一页上使用此布尔值,而该页是从该页面获得布尔值的。如果isMale为真,则我将显示一个男模特,而isMale的反义为假。 那部分正在工作。问题是当我回到现场时,所有的布尔值都将重置。有什么想法吗?
代码:
using UnityEngine;
using UnityEngine.UI;
public class SettingsScript : MonoBehaviour {
// Mikael Paaske
public static bool isMale;
public static bool showTutorial;
public static bool openInApp;
public GameObject canvas;
public GameObject showSexText;
public GameObject ønskeskyenText;
public GameObject tutorialText;
public Slider changeSexSlider;
public Image backgroundchangeSexSlider;
public Slider changeWebSiteSlider;
public Image backggroundchangeWebSiteSlider;
public Slider changeTutorial;
public Image backgroundchangeTutorial;
public void Start()
{
// Finder alle de nødvendige gameobjekter i scenen
canvas = GameObject.Find("SettingsCanvas");
showSexText = canvas.transform.Find("ShowSexText").gameObject;
ønskeskyenText = canvas.transform.Find("ShowØnskeskyenText").gameObject;
tutorialText = canvas.transform.Find("ShowToturialText").gameObject;
changeSexSlider = GameObject.Find("ChangeSexSlider").GetComponent<Slider>();
backgroundchangeSexSlider = GameObject.FindGameObjectWithTag("background").GetComponent<Image>();
changeWebSiteSlider = GameObject.Find("ØnskeskyenSlider").GetComponent<Slider>();
backggroundchangeWebSiteSlider = GameObject.FindGameObjectWithTag("backgground2").GetComponent<Image>();
changeTutorial = GameObject.Find("TutorialSlider").GetComponent<Slider>();
backgroundchangeTutorial = GameObject.FindGameObjectWithTag("backgground3").GetComponent<Image>();
}
public void Update()
{
// Ændrer farve på gameobjektet alt efter hvilken tekst der står ovenover
if (showSexText.GetComponent<Text>().text == "Kvinde")
{
backgroundchangeSexSlider.color = Color.red;
}
if (tutorialText.GetComponent<Text>().text == "Vis ikke")
{
backgroundchangeTutorial.color = Color.red;
}
if (ønskeskyenText.GetComponent<Text>().text == "Hjemmeside")
{
backggroundchangeWebSiteSlider.color = Color.red;
}
}
public void ChangeSex()
{
// Hvis slider bliver rykket til den ene ende, bliver boolen sat til det modsatte af før
isMale = !isMale;
Debug.Log(isMale);
// Ændrer gameobjektets tekst til det modsatte efter slideren er rykket
if (isMale == true)
{
showSexText.GetComponent<Text>().text = "Mand";
}
else if (isMale == false)
{
showSexText.GetComponent<Text>().text = "Kvinde";
}
}
public void ShowToturial()
{
// Hvis slider bliver rykket til den ene ende, bliver boolen sat til det modsatte af før
showTutorial = !showTutorial;
// Ændrer gameobjektets tekst ud fra boolen er sand eller falsk
if (showTutorial == true)
{
tutorialText.GetComponent<Text>().text = "Vis";
}
else if (showTutorial == false)
{
tutorialText.GetComponent<Text>().text = "Vis ikke";
}
}
public void WishList()
{
// Hvis slider bliver rykket til den ene ende, bliver boolen sat til det modsatte af før
openInApp = !openInApp;
// Ændrer gameobjektets tekst ud fra boolen er sand eller falsk
if (openInApp == true)
{
ønskeskyenText.GetComponent<Text>().text = "App";
}
else if (openInApp == false)
{
ønskeskyenText.GetComponent<Text>().text = "Hjemmeside";
}
}
}
答案 0 :(得分:0)
您将要使用Object.DontDestroyOnLoad。这将使您的对象和脚本在场景之间保持活动状态。您还必须注意,通过使用Singleton Pattern,在每个场景加载中最多只能有一个这种类型的对象。
另一种访问信息的方法是通过PlayerPrefs将它们保存到驱动器中。您可以在离开场景时保存它们,也可以在使用C#属性更改值时保存它们。