[Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(四)----使用PlayerPrefs存储数据到本地

这篇博客介绍了在Unity3D中如何利用PlayerPrefs类来存储和显示手机3D游戏的最高分。通过在游戏首页设置脚本,实现了数据的读取和写入,确保数据在场景切换后的同步更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于PlayerPrefs的使用与说明请参照这篇文章:

[Unity3D]手机3D游戏开发:场景切换与数据存储(PlayerPrefs 类的介绍与使用)


为了进一步完善上次做的Demo,首先制作一个首页用来跳转到目标页。

在首页的GameStateObj中添加SetPlayerPrefs脚本:

function Update () {
}

function Start() {
	PlayerPrefs.SetString("Player Name", "Bob");//存入字符串
}
再添加一个LoadLevelButton脚本创建跳转按钮和相关操作:

var levelToLoad:String;
var graphic = TextureGUI(); //(28,23);
var startPoint = Location();
var GUIColor:Color = Color.white;
var noGuiStyle : GUIStyle;

function Start() {
	graphic.setAnchor();
}

function Update() {
	if (graphic.texture){
		startPoint.updateLocation();
	}
}

function OnGUI() {
	GUI.color = GUIColor;
	if (GUI.Button(Rect(graphic.offset.x+startPoint.offset.x,graphic.offset.y+startPoint.offset.y,
            graphic.texture.width,graphic.texture.height),graphic.texture,noGuiStyle)) {
		PlayerPrefs.Save();
		Application.LoadLevel(levelToLoad);					
	}			
}

运行效果如下:


在上次的HighScoreDisplay脚本中作如下修改即可(Start方法中读取数据):

var boxStartLocation:Vector2; // offset of main GUI element
var center = Location(); // handy class for calculating the center of the screen

function Start() {
	Debug.Log(PlayerPrefs.GetString("Player Name"));
}

function Update() {
	center.updateLocation(); // every frame, check if the screen has changed and re-calculate the screen center value.
}

// draw a text string to the screen

var textGUIStyle : GUIStyle; // to control the display of text
var roundsGUIStyle : GUIStyle; // to control the display of text for kills
var score = new Highscore[10]; // array of names for the highscore

score[0].name = "www.DigitalTutors.com"; // Highscore #1
score[1].name = "Papa";
score[2].name = "Kyle";
score[3].name = "Tanya";
score[4].name = "Delano";
score[5].name = "Justin";
score[6].name = "Eddie";
score[7].name = "Josh";
score[8].name = "Chris";
score[9].name = "Steve";
score[0].rounds = 999;
score[0].kills = 999;

var heightOffset: float = 10; // how much space to place between each highscore level
var roundsOffset:float; // horizontal offset for rounds column
var killsOffset:float; // horizontal offset for kills column

var numberHighscores:int = 8; // controls how many loops to run to display

function OnGUI() {

	for(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值