Project1

标题: 如何创建一个常驻窗口,使得其在不同的Scene中都存在? [打印本页]

作者: daiboy12    时间: 2018-5-4 14:52
标题: 如何创建一个常驻窗口,使得其在不同的Scene中都存在?
如何创建一个常驻窗口,使得其在不同的Scene中都存在?

在MV里面,地图、菜单以及战斗界面被分作多个不同场景(Scene),场景的切回会使得窗口全部重新绘制。

现在我想做一个常驻的,显示角色各个属性的窗口,它在地图、菜单、战斗界面都会显示,请问应该把这个窗口创建在哪?

有考虑过每个场景都添加一个一样的窗口,但是这样会使得每次场景切换都要全部重新绘制一遍,造成不必要的卡顿。
作者: 梦想家大魔王    时间: 2018-5-4 16:29
那你应该在每种Scene中都创建一个该窗口实例。
作者: daiboy12    时间: 2018-5-4 17:00
梦想家大魔王 发表于 2018-5-4 16:29
那你应该在每种Scene中都创建一个该窗口实例。

这样子每次切换Scene都要重新绘制一遍窗口,感觉是没有必要的浪费。没办法一个实例多个Scene用吗?
作者: 芯☆淡茹水    时间: 2018-5-4 18:59
可以在 SceneManager 初始化的时候就加一个额外的 Scene 专门显示你的窗口。
但要注意在正常场景切换的时候,会挡住这个额外场景。
作者: Fan723    时间: 2018-5-4 23:41
就像道具菜单里面的道具说明窗口,在技能菜单、装备菜单、商店菜单里面等很多地方都有调用,是不是比较符合你的思路?可以参考一下。
作者: 玄羽    时间: 2018-5-5 04:10
Scene是书页,窗口是文字
并没有在书上挖洞这种操作
作者: yang1zhi    时间: 2018-5-5 08:04
可以这样搞
只用一个Scene
但是那些装备拉,状态拉,这些界面都不用再开Scene
直接在当前Scene操作。
作者: ekmomo    时间: 2018-5-5 10:29
每个场景都添加一个一样的窗口,但是这样会使得每次场景切换都要全部重新绘制一遍,造成不必要的卡顿。

首先这个观点有瑕疵,不是说你使用同一个窗口就不会重新绘制了,Canvas是每帧重绘,你可以想象一下如果不是这样,当你的角色掉血的时候,画面该如何监听我们的refresh方法?
所以四楼虽然给出了一个可行方法,即创建一个新的Scene(Stage)来放置窗口,但这是一个不可取的方法。反正都要重新绘制,为什么我要浪费一份资源多创建一个Stage?更好的做法是像MV一样把同一个窗口对象添加到不同的场景中去。

作者: daiboy12    时间: 2018-5-8 09:36
ekmomo 发表于 2018-5-5 10:29
首先这个观点有瑕疵,不是说你使用同一个窗口就不会重新绘制了,Canvas是每帧重绘,你可以想象一下如果不 ...

明白了。但是好奇怪,我这边做了一套窗口平移出场的动画,但是在场景切换的时候,前半段就不是特别顺滑,会有个明显卡顿。是否有什么写法,可以等窗口全部加载好了再开始动画,或者用某些技巧减少卡顿感?
作者: daiboy12    时间: 2018-5-8 09:37
谢谢楼上的各位!这样解释一下我好像清楚多了。看来只能想办法缓解窗口首次加载出现的卡顿问题了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1