unity场景重载/数据清空

您所在的位置:网站首页 unity怎么完全退出程序 unity场景重载/数据清空

unity场景重载/数据清空

2023-07-28 21:47| 来源: 网络整理| 查看: 265

或许有人在使用unity制作多个场景之后,进行场景重载遇到数据不清零的问题,举个粒子:你做了一个游戏,里面有5个游戏场景,一个主页场景,当你从主页中选择了一个游戏场景进入,这时你发现你的游戏场景一切都是正常的,当你从这个游戏场景返回你的主页后,从主页进入第二个场景后,你会发现你场景中的一些异常:你设置的单局游戏时间是10分钟,现在变成了5分30秒,你主角的血量本来是100,现在却变成了30!

那么出现这种问题的原因是什么呢?

场景重载之后,数据未清空!

public static bloodCount=100;//定义主角的血量为100 void Update(){ if(bloodCount==0) { //此处是主角在死亡后,你编写的像评分列表或者其他东西 } }

当你在一个场景中,让主角的血量变为了0,重新进入第二个场景后,你发现主角的血量并不是满血,仍然是0,导致第二个场景刚进去就播放了主角死亡后的评分页面! 无论你使用的是同步加载或者异步加载,你都会遇到这样的问题,出现这个问题的原因是你没有将主角的血量“清零”(当然了,这个地方应该是将主角的血量设置为100) 我最近也遇到了这样的问题,我是这样解决的: 我的代码中使用了很多static变量或者bool,导致我进入其他场景的时候遇到了以上问题,解决的办法很简单,那就是在脚本中写:

public static bloodCount=100;//定义主角的血量为100 // public static float score;分数 void Star() { bloodCount=100; //score =0;如果你定义了分数,需要他重载后从0分开始,这个时候你可以将它设置为0 } void Update(){ if(bloodCount==0) { //此处是主角在死亡后,你编写的像评分列表或者其他东西 } }

在你的脚本中的star生命周期将他重新赋值,就可以了,因为你在进入一个新的场景后,他会率先执行star,将你的血量重新定义为100!

经验: 或许你看过很多教程,里面都会告诉你命名规范,比如你命名一个年龄,尽量不要使用public int a;这种形式,会让别人看不懂,使用public int age=10;直接让人看懂,一个人的年龄为10岁,但是当你使用静态的时候,最好将age=10;写在star里面!

这是我的首秀,不是很高深,如果它真的帮助到了你,点个赞再走哦~


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3