马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
大家好!今天带来的是
当你用一套代码适配PC和手机并且给手机单独制作了宽屏UI想要Ren'py自动检验设备长宽比来确定项目的显示比例时的
检验配置代码😁
当然肯定有很多小伙伴想问了,renpy有自带的renpy.variant相关代码用来检验设备呀
但这里存在两个问题,一是在UI初始化阶段,renpy.variant代码不一定能够成功运行,还有一点是,renpy.variant代码检验设备时,实际上并不是按照设备长宽比来检验的。
比如说:
mobile检验的是系统,但是安卓/ios平板并不是宽屏;
small检验的是屏幕整体大小,部分高端手机型号并不会被检测为renpy.variant("small")这下只有土豪受害了
因此可以通过pygame中的功能,用以下这段代码来检验屏幕长宽比,并且根据这个比例来设置gui.init的项目分辨率。请将这段代码放在gui.rpy取代gui.init相关代码:
[RenPy] 纯文本查看 复制代码 ################################################################################
## 初始化
################################################################################
## “init offset”语句可使此文件中的初始化语句在任何其他文件中的“init”语句之前运
## 行。
init offset = -2
## 调用 gui.init 会将样式重置为合理的默认值,并设置游戏的宽度和高度(基准分辨
## 率)。
init python:
def ultrawide():#定义这个判断是否超宽的变量
import pygame_sdl2.display
try:
pygame_sdl2.display.init()
info = pygame_sdl2.display.Info()
if info.current_h > 0:
ratio = float(info.current_w) / info.current_h #计算长宽比
except:
pass
return ratio >= 2.0 or renpy.variant("small")
#如果设备被检测为small且长宽比大于某个值,我这里设置的是2。1080P的长宽比大概是1.78左右,目前市面上手机的长宽比一般在2.22左右
if type(persistent.sidetext) is not bool:
persistent.sidetext = False
if ultrawide():#如果被检验为宽屏
gui.init(2400,1080)
else:#如果检验不是宽屏
gui.init(1920, 1080)
这样就可以了!
在游戏中想要用一套UI适配两种长宽比的时候,可以使用
if ultrawide()
来判断是不是处于宽屏状态下。
是不是很好用!撒!来试试吧!!
|