功能:根据玩家的选择得到不同结果
思路:
使用PlayerPrefs类(用于本地持久化保存与读取的类)记录变量yes,no,记录问题个数q和问题个数c(几个变量的初始化写在start方法中)。
编写一个choiceClick类用于监听按钮行为,其中yesClick()方法记录点击首选项的次数,方法noClick()记录点击第二个选项的次数。游戏过程中问题出现个数设置为有限个(五个),当选择到第五个选项时跳至final()方法比较两个按钮的数值从而实现跳转至不同结果的场景。(话音外:emmm应该还有更简便的方法,,)
大概代码:
public void yesClick()
{
if (PlayerPrefs.GetInt("q") < c)//c为问题个数
{
PlayerPrefs.SetInt("yes", PlayerPrefs.GetInt("yes")+1);//更新y的值
//Debug.Log("yes");
if (PlayerPrefs.GetInt("q")==0)
{
//动作1
}
if(PlayerPrefs.GetInt("q") == 1)
{
//动作2
}
PlayerPrefs.SetInt("q",++i);
}
else
{
final();
}
}
问题:同一场景中进行第三个选择时q的数值不会改变,仍然为0
原因:在按钮中添加了choiceClick类,相当于第二个选择和第三个选择(该场景中的选择从第二个开始)都是独立调用,并不是调用同一个,所以数值只会在重复点击该按钮时才会更新。
解决方法:remove该类,建立名为script对象并将其拉至prefab中作为预制体,将类放置进该对象中,再拉进onclick()中将该类中的方法与该按键关联起来。
项目整合后,场景转换时q的数值没有进行叠加而是像上面所出现的问题一样重新开始记录
原因:每次转换场景时,start()方法会运行一次,也就是说每次场景转换的时候这些变量都会被重新初始化一次
解决方法:
在第一个场景中新建一个类对这些变量进行初始化,意味着整个游戏过程中这些变量只被初始化一次