tutorial_multires - seraph526/godot-se GitHub Wiki
屏幕缩放&多分辨率
基准分辨率(Base Resolution)
项目的基准分辨率可以在项目设置中设定。
但是,这一功能不是十分明显。在PC端运行时,引擎会尝试设置这个设定的分辨率(失败时,会使用更小的分辨率)。手机端,控制台或有固定分辨率的设备或者全屏渲染,这个设定的分辨率会被忽略,而使用原生设备的分辨率。为了补偿这一点,Godot提供了许多方法控制屏幕的大小和缩放以便适应不同的屏幕分辨率。
重定义大小 (Resizing)
有几种类型的设备,不同类型的屏幕,有不同的密度和分辨率。解决所有的这些问题有很多工作要做,所以Godot尝试使开发者的生活变得简单一点。Viewport节点有几个函数用于解决resizing的问题,屏幕的根节点通常会是一个viewport节点(加载的场景是它的一个子节点,通常可以通过"get_scene().get_root()"或"get_node("/root")访问)。
任何情况下,改变Viewport的参数是解决这一问题的最灵活的方法,但有很多的工作要做,代码和假想情况,所以,Godot在项目设置中提供了一个简单的参数来解决多分辨率的问题。
缩放设置 (Stretch Settings)
缩放设置可以在项目设置中找到,它是一系列的设置参数,提供了如下的一些选项:
缩放模式 (Stretch Mode)
- Disabled: 第一个参数是缩放模式。默认情况下,它是不可用的(disabled),不会有任何缩放(屏幕或窗口越大,分辨率越大,通常匹配像素比例为1:1)
- 2D: 在这个模式下,在项目设置中定义的分辨率的宽和高会被拉伸为整个屏幕大小,3D场景不会起作用(只是会渲染为higher-res),2D场景也会以higher-res渲染,但只是被拉大的。
- Viewport: Viewport缩放有点不同,root Viewport会被设置为render target,会一直精确地渲染为项目设置中"display/"部分设定的分辨率值。最后,viewport 被复制并缩放为适应屏幕大小。当游戏需要精确到像素级时,或者要以低分辨率渲染提高游戏性能时,这一模式非常有用。
缩放比例 (Stretch Aspect)
- Ignore: 缩放时忽略比例。原始的分辨率会被拉伸以适应新的屏幕大小,无论新屏幕是宽是窄。
- Keep: 保持比例缩放。缩放时保持原始的长宽比,在屏幕的左右两边,或上下,会根据需要填加黑边。
- Keep Width: 保持宽度不变。缩放时,如果目标的屏幕比定义的尺寸要高,会被在垂直方向上拉伸(Viewport会在垂直分辨率上等比例缩放). 在创建需要缩放的GUIs或HUDs时,这通常是最好的选择,一些controls可以被定位到屏幕底部(See Tutorial)。
- Keep Height: 保持高度不变。缩放时,如果目标屏幕比定义时的尺寸要宽,会在水平方向上拉伸(Viewport会在水平分辨率上等比全缩放)对于2D横向滚屏游戏来说,这通常是个不错的选择(如跑酷类游戏或平台类游戏)。