体彩排列三今天推荐号码: GUI 为什么场景切换时保留的物体身上的脚本又重新执行了一次?

9
回复
656
查看
打印 上一主题 下一主题
[ 复制链接 ]
3偶尔光临
259/300
排名
48129
昨日变化

排列三2014079期正版藏机图 www.d0po.cn 17

主题

73

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
182535
好友
0
蛮牛币
58
威望
0
注册时间
2016-11-10
在线时间
165 小时
最后登录
2019-4-17
5蛮牛币
场景切换后,部分物体保留,再切回来原有的场景时,我会做一个判断,就是场景中是否已经存在保留的物体了,有的话就销毁物体的生成,如此避免场景中又多出一组保留的物体。但这时会出现一个状况,就是保留的UI身上的脚本又被执行了一次,导致我的UI发生了不必要的变化。不知道要如何避免这种情况呢?
3偶尔光临
231/300
排名
11658
昨日变化

0

主题

75

帖子

231

积分

Rank: 3Rank: 3Rank: 3

UID
163693
好友
0
蛮牛币
533
威望
0
注册时间
2016-8-23
在线时间
68 小时
最后登录
2018-11-29
沙发
2018-6-26 09:34:08 只看该作者
因为你没有用代码做‘加载’这个事情
你把UI放在了场景中,每次加载这个场景,必然执行所有对象身上脚本的 Awake和Start
你可以把所有东西都通过代码加载,也就是,你的UI被实例化是代码控制的,而不是通过场景控制,这样你在DontDestory之后,再回到尝尽,只需要有一个变量判断是否是第一次进入,就可以不用再次实例化这个UI了。
上面这个是解决你问题的最快最简单办法

终极版,其实你应该这样做,涉及到一定框架
在你的第一个场景的前面再加一个场景,场景里只有一个对象,对象上有一个脚本。这个脚本就是所有程序的入口。所有东西都从这里衍生出来。比如,你在入口的Start中 创建游戏中需要的常驻UI 也就是从游戏开始到关闭都不会消失的UI。
因为这个场景应当只被加载一次,所以,这段代码只会执行一次,所以你根本都不需要考虑他会再次生成出来。你也可以把游戏里只整个生命周期里只需要执行一次的代码放在这里。

出现你说的问题,其实是你对数据的循环和代码理解不够,那个多余的UI对象其实就不应该再次被实例化出来,而不是出现了再删除他。从根源上消除它,很爽的哦

点评

我发现我用destroy销毁物体时物体并不会马上销毁,所以后面有些代码还是会被执行到。用了destroyimmediate就没问题了,但其实还是应该用你说的方法好  发表于 2018-6-26 21:30
3偶尔光临
159/300
排名
12881
昨日变化

0

主题

34

帖子

159

积分

Rank: 3Rank: 3Rank: 3

UID
285839
好友
0
蛮牛币
320
威望
0
注册时间
2018-6-14
在线时间
57 小时
最后登录
2018-10-29
板凳
2018-6-26 10:26:18 只看该作者
GameObject. DontDestroyOnLoad了解一下。
3偶尔光临
259/300
排名
48129
昨日变化

17

主题

73

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
182535
好友
0
蛮牛币
58
威望
0
注册时间
2016-11-10
在线时间
165 小时
最后登录
2019-4-17
地板
楼主 2018-6-26 10:43:05 只看该作者
zuoqifu 发表于 2018-6-26 10:26
GameObject. DontDestroyOnLoad了解一下。

我切换场景保留物体时就是用这个方法,现在的问题是切换场景时脚本里的start()函数又执行了一次。不知道要如何避免这个?
7日久生情
2965/5000
排名
782
昨日变化

53

主题

760

帖子

2965

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
69941
好友
1
蛮牛币
8620
威望
0
注册时间
2015-1-20
在线时间
918 小时
最后登录
2019-4-22
5#
2018-6-26 10:55:56 只看该作者
这个判断是放在哪里的呢?——"我会做一个判断,就是场景中是否已经存在保留的物体了,有的话就销毁物体的生成"
我觉得可以参考单例的实现方法,在对象的Awake/Start里面判断,if(instance==this)则执行本来要执行的内容,else{Destory(gameObject);}
这样如果是重复的对象,就销毁,否则才执行
6蛮牛粉丝
1326/1500
排名
3110
昨日变化

5

主题

358

帖子

1326

积分

Rank: 6Rank: 6Rank: 6

UID
234410
好友
2
蛮牛币
1488
威望
0
注册时间
2017-7-26
在线时间
473 小时
最后登录
2019-4-22
6#
2018-6-26 11:05:55 只看该作者
UI 框架中的 Push 操作改成实例化一个界面在Push
要不就 GameObject. DontDestroyOnLoad 直接不用
5熟悉之中
825/1000
排名
3288
昨日变化

1

主题

50

帖子

825

积分

Rank: 5Rank: 5

UID
253196
好友
5
蛮牛币
2688
威望
0
注册时间
2017-11-8
在线时间
310 小时
最后登录
2019-4-4
7#
2018-6-26 18:25:43 只看该作者
你可以把你想保留的物体做成预制体,然后添加GameObject. DontDestroyOnLoad,在第一个场景查找物体如果有的话就不生成,没有就生成一下。保留的物体最好在同一个物体下。
5熟悉之中
626/1000
排名
7194
昨日变化

11

主题

241

帖子

626

积分

Rank: 5Rank: 5

UID
245178
好友
0
蛮牛币
886
威望
0
注册时间
2017-9-21
在线时间
192 小时
最后登录
2018-10-25
8#
2018-7-2 13:47:58 只看该作者
新手路过 学习下 顺便灌个水!
4四处流浪
412/500
排名
8243
昨日变化

0

主题

105

帖子

412

积分

Rank: 4

UID
10107
好友
3
蛮牛币
309
威望
0
注册时间
2013-12-11
在线时间
159 小时
最后登录
2019-4-10
QQ
9#
2018-7-2 20:06:43 只看该作者
先弄个例子测试下,切换场景 ,Start函数会被重新调用吗?
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

  • 您访问的页面找不回来了 2019-04-07
  • 五莲科技局以“三大”助力动能转换 2019-04-07
  • 匹夫有责之一百一十二—道义大义的博客—强国博客—人民网 2019-03-30
  • 守住青山不放松 护好绿水不辞难——在渝全国人大代表聚焦“共抓大保护、不搞大开发”专题调研记略 2019-03-28
  • 经营者要想“我心换你心”,就要未雨绸缪,让不诚信的诱惑少一点,如此才能在市场中生存下来。反过来说,承担不起亏损就关门歇业,是否也是一种不诚信呢? 2019-03-21
  • 追风上市公司“跌落神坛”-热门标签-华商网数码 2019-03-21
  • 文化艺术交易场所沙龙第一期活动在京顺利举行 2019-03-16
  • 看把你高兴的屁颠屁颠的,光有赞有什么用?我给你个货真价实的 [大红包]。 2019-03-16
  • 候选企业:中国石油呼和浩特石化公司 2019-02-22
  • 我国纳米核心技术取得重大突破 2019-02-22
  • 北京:端午节民俗地图  小枣粽——竹叶红枣糯糯情  2019-01-26
  • 机器人送快递将在西安试点 识别红绿灯还能“车让人” 2019-01-26
  • 首批限竞房正式入市 戳三大盘看详情! ——凤凰网房产北京 2018-12-09
  • 世界杯频爆冷门网友大呼“天台见”!警方:不要冲动,不要跳楼 2018-08-21
  • 始终如一的是:美国优先。 2018-08-21
  • 735| 233| 774| 218| 840| 117| 612| 718| 237| 271|