跟siki学院教程学习愤怒的小鸟案例存储星星解决记录<二>
使用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学院教程学习愤怒的小鸟案例存储星星解决记录<二>相关推荐
- 跟siki学院教程学习愤怒的小鸟案例猪多次碰撞解决记录<一>
愤怒的小鸟学习过程遇到的细节 愤怒的小鸟运动过快如何消除残影 主要是因为Interpolate插值算法 Rigidbody.interpolation 插值可以平滑消除固定帧率运行物理导致的现象. 默 ...
- Unity教程之-制作闪亮的星星Star(二):创建Shader
继续上篇文章<Unity教程之-制作闪亮的星星Star(一):动态的创建Mesh>我们建立一个新的Shader将它命名为Star,然后写入以下代码. 什么是CGPROGRAM? Basic ...
- 理解siki学院吃豆人案例脚本
Gamemanager.cs(全局控制) using System.Collections; using System.Collections.Generic; using UnityEngine; ...
- python基础-------python2.7教程学习【廖雪峰版】(二)
2017年6月7日14:59:27 任务: 看完python基础 1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以 ...
- Mybatis学习-(案例)员工管理系统(二)——Maven仓库
❤ (ɔˆз(ˆ⌣ˆc)"玥"--乃古上神珠也.见者好运连连,点个关注,咱们来玥方长! (ง •̀_•́)ง加油
- Unity教程之-制作闪亮的星星Star(三):给Star创建Unity Editor编辑器
继续上篇文章<Unity教程之-制作闪亮的星星Star(二):创建Shader>,本篇我们来讲解 unity star editor的创建! 建立编辑器 Creating the Insp ...
- siki学院_Unity初级案例_愤怒的小鸟_学习笔记1/3
说明:本次学习开始于2018年9月23日,至9月26日已看完全部教学视频,并已基本完成该案例的制作,历时四天.本文档为我在学习过程中,通过记事本记录的学习过程,对于该游戏案例的制作过程并不十分详尽,不 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第六章:数据存储
第 6 章 数据存储 本章介绍Android 4种存储方式的用法,包括共享参数SharedPreferences.数据库SQLite.存储卡文 件.App的全局内存,另外介绍Android重要组件-应 ...
- Web前端第二季(CSS):十:第5章:案例开发:505-SiKi学院首页布局分析+506-开发右侧学习中心链接样式+507-切分SiKi学院的布局+508-开发SiKi学院的导航按钮
目录 一.目的 1.想:学习前端知识 2.想:记录笔记,下次不用看视频,直接看笔记就可以快速回忆. 二.参考 1.我自己代码的GitHub网址 1.SIKI学院:我参考此视频实操 1.w3school ...
最新文章
- OpenJDK 编译-Linux环境
- java request get json数据_Java中,获取request中json数据
- C#当中的BeginInvoke和EndInvoke
- 台积电和三星成半导体代工厂恶战主角 受谁影响?
- ***解决UEditor编辑器无法插入第三方视频地址
- 泛型 (Generics)一定是最易懂简单的
- 简单的maven引入外部jar项目打包
- MATLAB基本语法
- PDF如何添加下划线 捷速PDF编辑器一键搞定
- web前端开发--------CSS基础教程
- Java中mongodb指定DB通过aggregate聚合查询操作示例
- 解决微信图片不可引用的问题
- 使用NoneBot2可视化平台搭建QQ聊天机器人:本地和云部署教程
- 第十二周 任务二
- ASP.NETt运行原理和运行机制
- 十分钟明白什么是容器技术
- 使用Sandcastle 基于代码注释生成接口文档
- MySql约束和隔离性问题练习
- logistic 函数(logistic function)
- java正则表达式判断手机号、邮件、QQ格式校验