Cocos2dx学习笔记:浅谈游戏内的适配方案

前言
本篇在讲什么

Cocos2dx中的适配方案
本篇适合什么

适合初学Cocos的小白
本篇需要什么

Lua语法有简单认知
依赖Cocos2dx3.15环境
依赖Sublime Text编辑器
依赖VS 2015编辑器

本篇的特色

具有全流程的图文教学
重实践,轻理论,快速上手
提供全流程的源码内容


★提高阅读体验★

👉 ♠ 一级标题 👈

👉 ♥ 二级标题 👈

👉 ♣ 三级标题 👈

👉 ♦ 四级标题 👈


目录

  • ♠ 绘制视口
  • ♠ 适配
    • ♥ SHOW_ALL
    • ♥ EXACT_FIT
    • ♥ FIXED_WIDTH
    • ♥ FIXED_HEIGHT
    • ♥ NO_BORDER
  • ♠ 推送
  • ♠ 结语


♠ 绘制视口

通过CC_DESIGN_RESOLUTION全局表来设置设计尺寸和屏幕的适配方案,一般放在config.lua文件里

在这里插入图片描述

  • CC_DESIGN_RESOLUTION.width:设置屏幕宽度
  • CC_DESIGN_RESOLUTION.height:设置屏幕高度
  • CC_DESIGN_RESOLUTION.autoscale:设置屏幕适配方案

通过函数setDesignResolutionSize设置视口的设计尺寸和适配方式,lua脚本中放在了display.lua中的setDesignResolution函数内

在这里插入图片描述

可以通过setFrameSize来重设视口的大小, 博主一般写在display.lua脚本初始化的时候

local director = cc.Director:getInstance()
local view = director:getOpenGLView()
view:setFrameSize(1560, 720)

在这里插入图片描述

下图是重设置视口后,新窗口的显示大小,已经按照1560*720的尺寸重新绘制视口了

在这里插入图片描述


♠ 适配

本篇重点讲cc.ResolutionPolicy下不同字段的适配方案

cc.ResolutionPolicy =
{
    EXACT_FIT = 0,
    NO_BORDER = 1,
    SHOW_ALL  = 2,
    FIXED_HEIGHT  = 3,
    FIXED_WIDTH  = 4,
    UNKNOWN  = 5,
}

♥ SHOW_ALL

该适配方案是保持游戏视口宽高比不变,根据真实设备视口宽高,去整体缩放游戏视口的大小

C++逻辑在CCGLView.cpp内的updateDesignResolutionSize函数里,取宽高比其中较小的一个

在这里插入图片描述

在这里插入图片描述

我们的设计宽高是1280*720,下图是我们在cocos studio中根据设计宽高制作的一个场景文件

在这里插入图片描述

下面是我们在1560*720的视口下显示的效果,因为1560/1280=1.22,720/720=1,所以最终缩放比例是1,居中后两边会有黑边

在这里插入图片描述

下面是我们在960*720的视口下显示的效果,因为960/1280=0.75,720/720=1,所以最终缩放比例是0.75,居中后上下会有黑边

在这里插入图片描述


♥ EXACT_FIT

不管你的真实视口和设计宽高有多大差距,宽高均会根据比例铺满整个屏幕,C++代码如下所示

在这里插入图片描述

在这里插入图片描述

1560*720的视口下宽度被拉伸,铺满了整个屏幕

在这里插入图片描述

960*720的视口下高度被拉伸,铺满了整个屏幕

在这里插入图片描述


♥ FIXED_WIDTH

和SHOW_ALL有点类似,不过这个是指定宽度铺满整个屏幕,不考虑高度是否合适

在这里插入图片描述

在这里插入图片描述

480*480的视口下整体缩放比例不变,仅仅宽度铺满了屏幕

在这里插入图片描述


♥ FIXED_HEIGHT

这个是指定高度铺满整个屏幕,不考虑宽度是否合适

在这里插入图片描述
在这里插入图片描述

480*480的视口下整体缩放比例不变,高度铺满了屏幕

在这里插入图片描述


♥ NO_BORDER

按比例缩放,铺满整个屏幕,不留黑边,和SHOW_ALL正好相反,取的是宽高比大的一方作为整体缩放比例

在这里插入图片描述

在这里插入图片描述

1560*720960*720的视口下整体缩放比例不变,铺满了整个屏幕

在这里插入图片描述
在这里插入图片描述


♠ 推送

  • Github
https://github.com/KingSun5

♠ 结语

若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

👉 本文属于原创文章,转载请评论留言,并在转载文章头部著名作者出处👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35105.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软件测试】盘一盘工作中遇到的 Redis 异常测试

目录 前言: 一、更新 Key 异常 二、Key的删除和丢失 三、KEY 过期策略不当造成内存泄漏 四、查询Redis异常时处理 五、redis 穿透、击穿、雪崩 六、Redis死锁 七、Redis持久化 八、缓存与数据库双写时的数据一致性 前言: 在软件测试过程中&…

Centos安装RabbitMQ

#安装 yum install rabbitmq-server #启动 systemctl start rabbitmq-server #查看状态 systemctl status rabbitmg-server #安装管理插件 rabbitmg-plugins enable rabbitmg_management #新增admin账号 rabbitmqctl add_user admin admin #设置为管理员 rabbitmqctl set_user_…

计算机组成原理实验一:一位逻辑门构建

目录 一、实验目的 二、实验设备 三、实验原理 四、实验内容 1.一位非门 2.一位与门 3.一位或门 4.一位复用器 5.一位多路选择器 五、实验习题 如果只使用或非门搭建与、或和非门,该如何设计各芯片的物理结构? 六、自主设计——采用与或非门…

Word表格设置边框不生效的解决方法

1、这是新建并随意设置的表格,可以看出来上边框、内边框和下边框都是不同的粗细,很不协调。 2、选中表格,然后右击——>表格属性——>边框和底纹。 3、三线表,一般上边框和下边框都是1磅,内边框是0.5磅&#xff…

SpringSecurity对CSRF的支持实践

【1】什么是CSRF 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操…

【远程开发】VSCode使用Remote SSH远程连接Linux服务器

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转载自cpolar极点云…

MSP432自主开发笔记2:八路寻迹模块的编程

今日得以继续我的MSP432学习之路,今日学习八路寻迹模块的编程与测试: 本章需要掌握的知识只有俩个:串口通信发送数据、GPIO基础初始化与获取电平状态 这俩个在我专栏里都可寻到,大家可以自行查找~~ 八路灰度寻迹模块的原理与应用…

MySQL:子查询(全面详解)

MySQL:子查询 前言一、需求分析与问题解决1、实际问题2、子查询的基本使用3、子查询的分类 二、单行子查询1、单行比较操作符2、代码示例3、HAVING 中的子查询4、CASE中的子查询5、子查询中的空值问题6、非法使用子查询 三、多行子查询1、多行比较操作符2、代码示例…

pyodbc读取.mdb文件时出现[ODBC Microsoft Access Driver] 网络访问已中断。请关闭数据库.....解决方法

在使用pyodbc读取.mdb文件时出现下面的错误 : ODBC Microsoft Access Driver] 网络访问已中断。若要继续,请关闭数据库,然后再将其打开。 (-1022) (SQLDriverConnect) 网上找了很多方法,最后通过下面的方法解决了,就是安装64位的…

Flink写入数据到ClickHouse

文章目录 1.ClickHouse建表1.ClickHouse依赖2.Bean实体类3.ClickHouse业务写入逻辑4.测试写入类5.发送数据 1.ClickHouse建表 ClickHouse中建表 CREATE TABLE default.test_write (id UInt16,name String,age UInt16 ) ENGINE TinyLog();1.ClickHouse依赖 Flink开发相关…

【文生图系列】文生图大模型合集与效果对比

文章目录 DELL EDELL E 1DELL E 2 ERNIE-ViLGERNIE-ViLG 1ERNIE-ViLG 2Paddlehub ImagenMidjourneyStable DiffusionAltDiffusioneDiff-I阿里通义 DELL E DALLE到目前为止有两个版本,2021年1月,OpenAI发布了DALLE;2022年,DALLE 迎来了升…

【电影推荐系统】实时推荐

目录 原因 由于实时性,所以算法设计需要满足一下两点 算法设计 算法实现 算法公式 完整代码 原因 用户对电影的偏好随着时间的推移总是会发生变化的。此时离线系统无法解决,需要实时推荐。 由于实时性,所以算法设计需要满足一下两点 …

Go语言远程调试

Go语言远程调试 1、安装dlv # 安装dlv $ go install github.com/go-delve/delve/cmd/dlvlatest$ dlv version Delve Debugger Version: 1.20.1 Build: $Id: 96e65b6c615845d42e0e31d903f6475b0e4ece6e $2、命令行远程调试 我们远程(Linux服务器)有如下代码: [ro…

自学大语言模型之GPT

GPT火爆的发展史 2017年6月OpenAI联合DeepMind首次正式提出的:Deep Reinforcement Learning from Human Preferences,即基于人类偏好的深度强化学习,简称RLHF 2017年7月的OpenAI团队提出的对TRPO算法的改进:PPO算法 GPT-1&#…

Tomcat的优化多实例部署

目录 一.tomcat核心组件模块 1.2. toncat功能组件结构 二.Tomcat 优化 三.简述Tomcat请求过程 四.Tomcat 多实例部署 多实例部署图示 1.关闭防火墙 拖入软件包 2.安装JDk 设置JDK环境变量 3.解压tomcat 创建目录 4.配置 tomcat 环境变量 5.修改 tomcat2 中的 server.xm…

学习系统编程No.29【线程执行过程之页表详解】

引言: 北京时间:2023/7/3/14:09,刚睡醒,放假在家起床时间确实不怎么好调整,根本固定不了一点,当然通俗点说也就是根本起不来,哈哈哈,已经很少见到那种7点起来码字的情形了&#xff…

UART-GD32

UART-GD32 通信的概念 同步通信和异步通信 数据帧格式 波特率 使用步骤 引脚分布

gitLab配置ssh实现私钥访问

1.配置ssh文件 1.cd C:\Users\用户名\.ssh 找到文件夹 删除.ssh 里面所有其他文件方面我们配置要最新的 2.win r cmd 呼出命令行 ssh-keygen -t rsa -C "必须对应gitLab用户名" 3.生成文件夹拿到ssh 4.复制id_rsa_pub 文件的全部字符串 公钥给到GitLab服务器 2.公…

Spring Boot 中的模板引擎是什么,如何使用

Spring Boot 中的模板引擎是什么,如何使用 在 Web 应用程序中,模板引擎是一种用于动态生成 HTML、XML、JSON 等文档的工具。Spring Boot 内置了多种常见的模板引擎,例如 Thymeleaf、Freemarker、Velocity 等,让我们可以轻松地创建…

线性代数行列式的几何含义

行列式可以看做是一系列列向量的排列,并且每个列向量的分量可以理解为其对应标准正交基下的坐标。 行列式有非常直观的几何意义,例如: 二维行列式按列向量排列依次是 a \mathbf{a} a和 b \mathbf{b} b,可以表示 a \mathbf{a} a和…