使用PlayerPrefs存储并显示星星数据无效bug

保存不了星星数据。。。
找了一天,完全跟siki学院的代码一模一样,但就是运行不起来,后来我(在一个撤退键上的脚本)设置所有相关的存储的变量都赋初值0,就好了,灰常玄学,不过这个归零键倒是对之后敲代码调试蛮有帮助。

判断下一关卡是否开启使用的int.Parse造成字符串格式错误bug

我抄代码判断小关卡该不该可选时,用的int.Parse总是报错FormatException异常,(字符串内容不是数字)还有很多高级语句用法出错
于是只能重新写储存数据的大部分,写的非常的绕圈绕圈绕圈

小关卡选择的部分代码levelSelect:

private void Start(){if (PlayerPrefs.GetInt("Star") /2>= int.Parse(gameObject.name)) //如果够该关卡的星星数量,则使该关卡可点击{isSelect = true;}}
public void Selected(){if (isSelect == true){SceneManager.LoadScene(2);//进入游戏PlayerPrefs.SetString("nowLevel", "level" + gameObject.name);//gameObject.name 是挂载当前脚本的物体, 不是某关卡}}

大关卡选择的部分代码mapSelect:

 void Start(){if (StarNum == 0)//通过标识符判断是哪一大系列关卡,同时也是开启该关卡需要的星星数{if (PlayerPrefs.GetInt("Star") >= StarNum)//如果够该关卡的星星数量,则使该关卡可点击,star为星星总数{isSelect = true;PlayerPrefs.SetInt("Map", 1);//为第一个map大关卡LevelStarsText.text = PlayerPrefs.GetInt("Map1") + "/27";//输出该关卡的星星总数在游戏界面上(Map)/27}}if (isSelect){locks.SetActive(false);//点击后的使锁消失,显示出星星数量stars.SetActive(true);}

gameManager

public void SaveStar(){if (starsNum1 > PlayerPrefs.GetInt(PlayerPrefs.GetString("nowLevel"))){PlayerPrefs.SetInt(PlayerPrefs.GetString("nowLevel"), starsNum1);int sum = 0;if (PlayerPrefs.GetInt("Map") == 1){sum = PlayerPrefs.GetInt("level1") + PlayerPrefs.GetInt("level2") + PlayerPrefs.GetInt("level3") +PlayerPrefs.GetInt("level4") + PlayerPrefs.GetInt("level5") + PlayerPrefs.GetInt("level6") +PlayerPrefs.GetInt("level7") + PlayerPrefs.GetInt("level8") + PlayerPrefs.GetInt("level9");//累加,见笑了,抄了好多高级代码都运行不了,只能写底端逻辑PlayerPrefs.SetInt("Map1", sum);}}}

储存数据思路详解

代码如上图123,重点将每一关卡从1开始取数字名字
首先在levelSelect里的点击跳转的函数上把该小关卡的名字"level" + gameObject.name以字符串的形式传给nowLevel
(gameObject:在每个小关卡都挂上levelSelect脚本)

 public void Selected(){if (isSelect == true){SceneManager.LoadScene(2);PlayerPrefs.SetString("nowLevel", "level" + gameObject.name);//gameObject.name 是挂载当前脚本的物体 不是关卡}}

再去gameManager里的储存函数把当前这个关卡的星星数量starsNum1存到nowLevel里的字符串level+n
而nowLevel里的字符串会随着小关卡的点击一直刷新,变成点击的某关卡的名字

 public void SaveStar(){if (starsNum1 > PlayerPrefs.GetInt(PlayerPrefs.GetString("nowLevel")))//判断下,只存最高数据{PlayerPrefs.SetInt(PlayerPrefs.GetString("nowLevel"), starsNum1);//取出nowLevel里的字符串level+n,把星星数复制给他}

最后去mapSelect存储大关卡的总星星数,就用最简单的map1=level1+…leveln,存每个大关卡的数据,代码如上图2

小鸟飞行中点击暂停会释放技能

记个笔记之后注意
小鸟飞行中点击暂停会释放技能的问题:可以通过设置UI界面的【raycast target】属性,不勾选可以不做交互,让鼠标点击穿过这层UI。

去往下一关的设置

  public void playNext(){Time.timeScale = 1;SaveStar();//存储数据string levelNum = PlayerPrefs.GetString("nowLevel");//去掉字符串里带level的字符,即得到当前是第几关levelNum = levelNum.Replace("level", "");//关卡数加一 这里还要判断一下当前i是否大于当前地图里边最大的关卡数54int i = int.Parse(levelNum) + 1;levelNum = "level" + i.ToString();//(level“第几关卡”)if ((PlayerPrefs.GetInt("Star") / 2 >= i)&&i<55)//如果星星总数÷2大于下一关卡的名字(每一关从1的顺序取名)//如果星星数量够去往下一关,则跳转{PlayerPrefs.SetString("nowLevel", levelNum);SceneManager.LoadScene(2);}}

这个脚本挂在游戏game.unity里的主摄像机上,摄像机下清空,游戏打包到文件夹里,当跳转到SceneManager.LoadScene(2) 时去往nowLevel此时代表队字符串level+n,第n个关卡里。


public class loadLevel : MonoBehaviour
{private void Awake(){Instantiate(Resources.Load(PlayerPrefs.GetString("nowLevel")));}
}

跟siki学院教程学习愤怒的小鸟案例存储星星解决记录<二>相关推荐

  1. 跟siki学院教程学习愤怒的小鸟案例猪多次碰撞解决记录<一>

    愤怒的小鸟学习过程遇到的细节 愤怒的小鸟运动过快如何消除残影 主要是因为Interpolate插值算法 Rigidbody.interpolation 插值可以平滑消除固定帧率运行物理导致的现象. 默 ...

  2. Unity教程之-制作闪亮的星星Star(二):创建Shader

    继续上篇文章<Unity教程之-制作闪亮的星星Star(一):动态的创建Mesh>我们建立一个新的Shader将它命名为Star,然后写入以下代码. 什么是CGPROGRAM? Basic ...

  3. 理解siki学院吃豆人案例脚本

    Gamemanager.cs(全局控制) using System.Collections; using System.Collections.Generic; using UnityEngine; ...

  4. python基础-------python2.7教程学习【廖雪峰版】(二)

    2017年6月7日14:59:27 任务:     看完python基础 1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以 ...

  5. Mybatis学习-(案例)员工管理系统(二)——Maven仓库

    ❤ (ɔˆз(ˆ⌣ˆc)"玥"--乃古上神珠也.见者好运连连,点个关注,咱们来玥方长! (ง •̀_•́)ง加油

  6. Unity教程之-制作闪亮的星星Star(三):给Star创建Unity Editor编辑器

    继续上篇文章<Unity教程之-制作闪亮的星星Star(二):创建Shader>,本篇我们来讲解 unity star editor的创建! 建立编辑器 Creating the Insp ...

  7. siki学院_Unity初级案例_愤怒的小鸟_学习笔记1/3

    说明:本次学习开始于2018年9月23日,至9月26日已看完全部教学视频,并已基本完成该案例的制作,历时四天.本文档为我在学习过程中,通过记事本记录的学习过程,对于该游戏案例的制作过程并不十分详尽,不 ...

  8. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第六章:数据存储

    第 6 章 数据存储 本章介绍Android 4种存储方式的用法,包括共享参数SharedPreferences.数据库SQLite.存储卡文 件.App的全局内存,另外介绍Android重要组件-应 ...

  9. Web前端第二季(CSS):十:第5章:案例开发:505-SiKi学院首页布局分析+506-开发右侧学习中心链接样式+507-切分SiKi学院的布局+508-开发SiKi学院的导航按钮

    目录 一.目的 1.想:学习前端知识 2.想:记录笔记,下次不用看视频,直接看笔记就可以快速回忆. 二.参考 1.我自己代码的GitHub网址 1.SIKI学院:我参考此视频实操 1.w3school ...

最新文章

  1. OpenJDK 编译-Linux环境
  2. java request get json数据_Java中,获取request中json数据
  3. C#当中的BeginInvoke和EndInvoke
  4. 台积电和三星成半导体代工厂恶战主角 受谁影响?
  5. ***解决UEditor编辑器无法插入第三方视频地址
  6. 泛型 (Generics)一定是最易懂简单的
  7. 简单的maven引入外部jar项目打包
  8. MATLAB基本语法
  9. PDF如何添加下划线 捷速PDF编辑器一键搞定
  10. web前端开发--------CSS基础教程
  11. Java中mongodb指定DB通过aggregate聚合查询操作示例
  12. 解决微信图片不可引用的问题
  13. 使用NoneBot2可视化平台搭建QQ聊天机器人:本地和云部署教程
  14. 第十二周 任务二
  15. ASP.NETt运行原理和运行机制
  16. 十分钟明白什么是容器技术
  17. 使用Sandcastle 基于代码注释生成接口文档
  18. MySql约束和隔离性问题练习
  19. logistic 函数(logistic function)
  20. java正则表达式判断手机号、邮件、QQ格式校验

热门文章

  1. 八、DMSP/OLS夜间灯光数据之GDP空间化结果分析——增长速度
  2. 解决APK下载到Cache目录安装提示“解析安装包失败”的问题
  3. 漂亮的网页动态飘花灯笼特效代码
  4. Vue scss 引入变量报错
  5. 高等数学精讲01 第一章第一节 函数
  6. 端午遇上618,MathType也搞事!
  7. 【智能仪器】基于python的非线性校正(曲线拟合法)
  8. Qt Creator删除toolbar中多余的“分隔符”
  9. 基于类语言模型和令牌传递解码器的端到端上下文语音识别(论文翻译)
  10. 哪些东西,年轻人千万不能碰