# 播放态调试

用户在选择了对应的需要播放的场景以后,可以使用工具上方的播放按钮,直接开始运行,这时候挂载在场景的代码的生命周期都会运行起来。运行的过程业务代码和真机运行环境是一致,从而达到调试代码,快速开发的体验。这是一个快速预览的能力,为了能让开发快速跑起来,省去了大量真机才会用到的资源编译,比如压缩纹理。如果要模拟调试真机,可以构建后使用模拟器调试。

playmode

进入方式,小游戏的进入有非常多的场景,比如卡片进入,我的小程序进入等。可以通过进入方式来模拟进入的场景和链接参数来模拟。可以在wx.onShow()中获取到进入的参数,从而模拟微信的各种使用场景。

Hierarchy,会实时显示游戏3D,2D场景根节点。也会把用户的MarkAsPersist节点显示出来。使用快捷键ctrl+shift+h(shift+command+h on macOS)可以显示所有的正在使用的隐藏节点。

Inspector,如果选中了entity,或是project中的资源,会把游戏中实时的状态显示出来。比如如果选中了某个material资源,并不会把本地文件的内容显示出来,而是显示当前游戏中使用的这个material的内存单例的情况。如果代码对loader.load回来的资源进行了修改,也会在inspector中反应出来。entity也同理,显示的是当前的场景中选中的entity。并且修改了inspector的数值,也会对资源内存实例和entity实例实时生效。

暂停与下一帧,提供了暂停能力,在使用了暂停以后,游戏进入暂停状态,Script的生命周期会停止调用。但是暂停的时候,用户依然可以去查看entity状态,资源状态。也可以使用Scene窗口去查看当前世界的情况。也支持下一帧,按帧前进。

刷新,支持刷新能力。用户在播放态去修改本地的代码,工具不会即时生效。但刷新之后再次进入工具就会使用新的代码,让开发者能快速改变代码。

Devtool,播放态是快速运行模式,和真机不太一样。对于用户代码,在播放态运行的代码和真机是一致的,但是框架会额外运行一些与工具相关的逻辑,所以使用performance进行CPU Profile的时候框架的开销不够准确,也可能多一些工具的运行开销。但是基本上开发者的业务代码的开销是准确的。Network里面的加载也和真机不一致。为了快速调试,播放态是不会对资源进行构建编译的,比如不合并资源,不使用压缩纹理,不针对atlaspac进行合图处理。

无法编辑资源,用户在播放态无法保存资源文件,必须要回到编辑态。

其他窗口,所有的窗口都是使用内存中变量进行调试,比如animator会实时显示当前用到的状态机的在游戏中的即时情况,而不是查看文件系统中的内容。在播放态模式有的窗口是无法使用的,比如配置面板。