我正在使用团结。我需要巩固比赛的得分。我无法保持得分并将其发布到统一的另一个场景中。
如何做到这一点?
#pragma strict
private var playerAnswer = "";
var score : int = 0;
var number : int;
var number2: int;
var answer : int;
function Start()
{
number = Random.Range(2,12);
number2= Random.Range(2,12);
answer = number*number2;
}
function OnGUI()
{
var guiStyleA =GUI.skin.GetStyle("Button");
guiStyleA.fontSize = 20;
guiStyleA.fontStyle = FontStyle.Normal;
var guiStyleB = GUI.skin.GetStyle("Label");
guiStyleB.fontSize = 25;
guiStyleB.fontStyle = FontStyle.Normal;
GUI.skin.textField.fontSize =20;
GUI.Box(Rect (150,10,50,30),score.ToString());
GUI.Label(Rect(0,10,200,150), number + " X "+ number2 + " = ");
playerAnswer = GUI.TextField ( Rect (150, 70, 30, 30), playerAnswer);
if ( GUI.Button ( Rect (70, 115, 70, 40) , "Submit" ) )
{ //just a button
CheckAnswer();
}
}
function CheckAnswer()
{
if ( playerAnswer == answer)
{
score += 1;
print("Correct");
}
else
{
}
}
答案 0 :(得分:1)
如果要在场景之间存储变量,可以使用Unity PlayerPrefs
这是一个例子:
PlayerPrefs.SetInt("Player Score", 10);
第一个参数是我们用来获取未来存储变量的键,第二个参数是值。
然后在另一个场景中,如果你想获得玩家得分,你需要做的就是GetInt
:
print (PlayerPrefs.GetInt("Player Score"))
您还可以使用PlayerPrefs.SetString
和PlayerPrefs.SetFloat
存储字符串或浮点数。
答案 1 :(得分:0)
@Gary Olsson解决方案没问题,但不仅仅是一个,而且我认为不是最好的方式(访问设备存储)。
除了使用PlayerPrefs
之外,你还有以下选项:
使一个游戏对象在加载场景之间不被破坏并保留其中的值。为此,请分配给该gameObject组件并Awake
致电DontDestroyOnLoad
使用静态变量或属性。他们和申请一样长。