找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 33|回复: 0

[原创] 根据设备长宽比自适配项目分辨率

[复制链接]
发表于 前天 16:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
大家好!今天带来的是

当你用一套代码适配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()
来判断是不是处于宽屏状态下。

是不是很好用!撒!来试试吧!!

评分

参与人数 2活力 +300 干货 +6 收起 理由
被诅咒的章鱼 + 300 + 3 感谢分享!
Maz马 + 3 版区有你更精彩(*^_^*)

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号 )

GMT+8, 2026-4-17 17:07 , Processed in 0.022181 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表