Cocos Creator 试玩广告开发
之前主要是使用Unity,这次刚好项目是试玩游戏的开发,所以临时学了Cocos来开发。所以这篇文章,更加关注从Unity转到Cocos开发的经历以及试玩的基本开发。
首先,我是没有使用过Cocos的,也没有接触过Ts语言,对于Ts的开发开始也很难习惯,不过语言之间都大差不差,遇到不清楚的查一下文档即可。
如果你之前也是使用Unity开发的,基本上可以直接上手Cocos,两者从界面上来说,没太大区别,不过对于Cocos-2dx来说,游戏不一样。具体的区别和使用体验我就不说了,这不是重点。
cocos creator 3.8界面
unity 2022界面
不过,Cocos在运行时好像不能看编辑界面,这一点很难受。至于其他部分的用法和unity几乎一样。如果你也是从unity转来暂时需要用Cocos,请不用担心,
下面记录一些开发中所遇到的问题。
问题集合:
1.Cocos版本
Cocos版本迭代好像很快,哪怕是小版本之间的区别也蛮大的,项目创建需要注意
2.射线检测失效
在开发中,突然发现射线检测没有用了,有时候能检测到射线开始,却检测不到结束。之类的情况,这个问题是Cocos自己的Bug,退出重启即可。
3.脚本中的定义怎么才能在面板中显示出来。
虽然ts支持的数据容器也有好些,但是我确实不知道在Cocos中怎么用,可能我用的不多。在存储大量类型方面我一直用的数组。
//面板中显示必须加,并且需要赋初值@property(Node)//括号中也需要指定类型public curNum: num = null;@property([SpriteFrame])public nums: SpriteFrame[] = Array<SpriteFrame>();
4.更改屏幕分辨率
之前好像是能之间在Canvas组件上面改,不过后面移到项目设置中去了
5.移动端设计了横竖屏的切换,但是运行后无法转换,或者转换后马上转回去了
这个是由于在打包构建时,设备方向勾选了横或者竖,改为自动即可。
6.打包运行
其他打包我没有试过,目前主要时Web移动和桌面端,这两种打包方式打包出来是无法直接运行的。
运行方式:
1.在包体构建完成之后,Cocos构建界面可以之间点击运行。
2.如果你代码是用VsCode写的,可以加上Live Server的扩展,然后打开构建完成的文件夹,运行Index.html即可。
3.服务器部署
将项目部署在服务器上,这就比较复杂了。不过试玩广告主要也就一个html文件,用一个文件服务器就可以了。
可以用下面的这个简单的做一些部署,就可以通过手机访问到你的打包文件了。
HFS ~ HTTP File Server
7.编辑预览
在开发过程中,想要实时看在手机上的运行情况,官方推荐的是之间扫二维码预览。但我试了一下,好像不行,这个位置先空着,之后有办法在补充。
后面我有看来一下,需要手机与电脑处于同一个局域网内,但是实际在做项目的时候,公司这边的Wifi好像不行。如果需要实时的预览手机运行情况,出了打包之外,在电脑上安装手机模拟器也可以直接扫描二维码运行。
8.横竖屏切换
这一点有些坑,横竖版的两个素材,在运行中切换横竖屏的表现状态和运行前直接改分辨率的表现是不一样的,所以需要做一些单独的适配,在项目中我采用了横竖屏两套状态的切换方式。
而且在网上找的很多实列拿过来之后就不能用了,主要是Cocos迭代把一些API去掉了
不过对于横竖屏的判断,大多都是判断屏幕的长和宽的大小,我这里随便占了一个,指不定啥时候这Api又被扔掉了
let winSize = new Size(screen.windowSize.width / view['_scaleX'], screen.windowSize.height / view['_scaleY']);if (winSize.width > winSize.height) {this.curState = true;this.backGround.spriteFrame=this.spBg[1];}else {this.curState = false;this.backGround.spriteFrame=this.spBg[0];}
9.包体大小
由于平台限制,试玩基本上不能超过5MB,在我打包完之后,发现不管是那个平台的html似乎都很大,这让我很苦恼,我找了很多方法,包括资源文件夹的使用等等,好像都不太管用,后面我又换版本,发现越换越大,我突然想到会不会是文件残留。试了之后,果然如此。下面我罗列一些包体优化的方法。
1.优化图片文件体积
2.优化声音文件
3.优化字体字库大小
4.优化引擎代码体积
其他几个我还没用过,毕竟试玩的资源也不会太多。优化引擎代码体积,主要是剔除一些不必要的模块
5.重建大法
这个方法不确定有没有用,反正我是可以用的,在项目根目录下删掉不需要的文件,重新构建,比如Library这些文件
10. 特效不显示
在Cocos商店下载了一份3d特效,但是放在2D项目中,在运行之前能够看到特效,但是运行之后却不显示的问题。
解决方法:1.更改摄像机的参数,Visibilty中将GIZMOS勾选上
2.给特效添加UIMeshRenderer组件,如果是多个特效的预制体,则每一个特效都需要添加这个组件
试玩开发
打包出来的文件很多,但是试玩只需要一个html文件,这需要我们手动写插件压缩,如果公司有大佬写了还好,如果没有只能向我一样到处找了,下面这个项目能构建的平台非常多,而且使用也很方便。链接放这里了。
https://github.com/ppgee/cocos-pnp
打包之后的文件
打包之后的单html就是我们需要的试玩文件了。这个时候就可以上传相关的平台了。
下载跳转
那么试玩之后的下载跳转怎么做呢。
根据要求,我们只需要调用mraid.open()这个API就可以了,并且打包文件的AppLovin中是自带的,可是我找了半天根本没有啊。后面也是看到一位老哥的帖子才知道怎么做。
解决方案:
1.在代码的对应位置之间调用mraid.open(),这个时候会爆红,不用管他。打包
2.打包完成,打开AppLovin.html,将这个删掉
这个时候上传测试就可以发现点击之后出现跳转提示了。
这就是目前遇到的一些问题和总结,后面有的话会继续更新。
相关文章:

Cocos Creator 试玩广告开发
之前主要是使用Unity,这次刚好项目是试玩游戏的开发,所以临时学了Cocos来开发。所以这篇文章,更加关注从Unity转到Cocos开发的经历以及试玩的基本开发。 首先,我是没有使用过Cocos的,也没有接触过Ts语言,对于Ts的开发开…...

快速解决oracle 11g中exp无法导出空表的问题
在一些生产系统中,有些时候我们为了进行oracle数据库部分数据的备份和迁移,会使用exp进行数据的导出。但在实际导出的时候,我们发现导出的时候,发现很多空表未进行导出。今天我们给出一个快速解决该问题的办法。 一、问题复现 我…...

selenium 报错 invalid argument: invalid locator
环境: Python3.12.2 selenium4.0 报错信息: invalid argument: invalid locator 错误分析: selenium语法错误,find_element方法少写By.XPATH参数 错误语法如下: driver.find_element(//div[id"myid"]) 解决办…...

Flink2.0未来趋势中需要注意的一些问题
手机打字,篇幅不长,主要讲一下FFA中关于Flink2.0的未来趋势,直接看重点。 Flink Forward Asia 2024主会场有一场关于Flink2.0的演讲,很精彩,官方也发布了一些关于Flink2.0的展望和要解决的问题。 1.0时代和2.0时代避免…...

机械鹦鹉与真正的智能:大语言模型推理能力的迷思
编者按: 大语言模型真的具备推理能力吗?我们是否误解了"智能"的本质,将模式匹配误认为是真正的推理? 本文深入探讨了大语言模型(LLMs)是否真正具备推理能力这一前沿科学问题,作者的核…...

本地电脑使用命令行上传文件至远程服务器
将本地文件上传到远程服务器,在本地电脑中cmd使用该命令: scp C:/Users/"你的用户名"/Desktop/environment.yml ws:~/environment.yml 其中,C:/Users/“你的用户名”/Desktop/environment.yml是本地文件的路径, ~/en…...

【系统】Windows11更新解决办法,一键暂停
最近的windows更新整的我是措不及防,干啥都要关注一下更新的问题,有的时候还关不掉,我的强迫症就来了,非得关了你不可! 经过了九九八十一难的研究之后,终于找到了一个算是比较靠谱的暂停更新的方法&#x…...

34. Three.js案例-创建球体与模糊阴影
34. Three.js案例-创建球体与模糊阴影 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它负责将场景中的对象绘制到画布上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersObject可选参数对象,包…...

Qt同步读取串口
头文件 #include "InsScpi.h" #include <QObject> #include <QSerialPort>class TestSerial : public QObject {Q_OBJECT public:explicit TestSerial(QObject *parent nullptr);//打开设备bool openDevice(const QString &portName);//关闭设备…...

如何用上AI视频工具Sora,基于ChatGPT升级Plus使用指南
没有GPT,可以参考这个教程:详情移步至底部参考原文查看哦~ 1.准备工作 详情移步至底部参考原文查看哦~ 详情移步至底部参考原文查看哦~ 4.Sora使用 详情移步至底部参考原文查看哦 参考文章:【包教包会】如何用上AI视频工具Soraÿ…...

对象的状态变化处理与工厂模式实现
一、引言 在 C 编程中,有效地处理对象的状态变化以及合理运用设计模式可以极大地提高代码的可维护性、可扩展性和可读性。本文将深入探讨 C 如何处理对象的状态变化以及如何实现工厂模式。 二、C 中对象的状态变化处理 使用成员变量表示状态 class GameCharacte…...

关于IP代理API,我应该了解哪些功能特性?以及如何安全有效地使用它来隐藏我的网络位置?
IP代理API是一种服务,允许用户通过访问经过中间服务器的网络连接来改变其公开的互联网协议地址(IP),从而达到隐藏真实地理位置的效果。以下是您在选择和使用IP代理API时应关注的一些功能和安全性考虑: 匿名度ÿ…...

在Linux上将 `.sh` 脚本、`.jar` 包或其他脚本文件添加到开机自启动
在Linux上将 .sh 脚本、.jar 包或其他脚本文件添加到开机自启动 在Linux环境中,有时需要将一些程序、脚本或应用程序设置为开机时自动启动。这对于那些需要在系统启动时启动的服务或应用非常有用。本文将介绍如何将 .sh 脚本、.jar 包或其他脚本文件添加到Linux系统…...

[Maven]构建项目与高级特性
有关于安装配置可以看我的另一篇文章:Maven下载安装配置与简介。 构建项目的生命周期和常用命令 这一节的内容熟记即可,要用了认得出来即可。 在Maven出现之前,项目构建的生命周期就已经存在。对项目进行清理、编译、测试、部署等一系列工作…...

【系统架构设计师】真题论文: 论数据分片技术及其应用(包括解题思路和素材)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2020年 试题1)解题思路论文素材参考Hash 分片原理一致性 Hash 分片原理按照数据范围(Range Based)分片原理项目采用的分片方式的实现过程和效果真题题目(2020年 试题1) 数据分片就是按照一定的规则…...

【bWAPP】XSS跨站脚本攻击实战
别低头,皇冠会掉;别流泪,贱人会笑。 0x01、XSS - Reflected (GET) Low 输入的内容直接输出到页面中: 后台服务端没有对输入的参数进行过滤, 构造一个注入xss payload即可: <script>alert(1)</script> 成功弹窗 Medium 审查…...

Ubuntu 22.04,Rime / luna_pinyin.schema 输入法:外挂词库,自定义词库 (****) OK
测试平台: Ubuntu 22.04 sudo apt install ibus-rime 实例 1 :不实用的 实例 2 :实用的 文件使用说明:已经内嵌在文件中了。 ====================================== 实例 1 :不实用的 一共需要 3 个文件,放在用户文件夹下:~/.config/ibus/rime/ # Test A @ Fi…...

多协议视频监控汇聚/视频安防系统Liveweb搭建智慧园区视频管理平台
智慧园区作为现代化城市发展的重要组成部分,不仅承载着产业升级的使命,更是智慧城市建设的重要体现。随着产业园区竞争的逐渐白热化,将项目打造成完善的智慧园区是越来越多用户关注的内容。 然而我们往往在规划前期就开始面临众多难题&#…...

如何高效获取Twitter数据:Apify平台上的推特数据采集解决方案
引言 在数据分析和市场研究领域,Twitter(现在的X)数据一直是重要的信息来源。但是,自从Twitter更改API定价策略后,获取数据的成本大幅提升。本文将介绍一个经济实惠的替代方案。 为什么需要Twitter数据? …...

第二部分:进阶主题 15 . 安全管理 --[MySQL轻松入门教程]
MySQL 数据库的安全管理是一个多方面的工作,涉及到了解和配置数据库的访问控制、加密、备份与恢复策略、日志记录等多个方面。以下是一些关键点: 1. 用户权限管理 最小权限原则:每个用户应该只被授予完成其工作所需的最低限度的权限。定期审查权限:定期检查用户的权限,确…...

力扣hot100——双指针
283. 移动零 class Solution { public:void moveZeroes(vector<int>& nums) {for (int i 0, j 0; j < nums.size() || i < nums.size(); j) {if (j > nums.size()) {nums[i] 0;continue;}if (nums[j]) nums[i] nums[j];}} }; 双指针,一个指…...

【代码随想录day58】【C++复健】 117. 软件构建(拓扑排序);47. 参加科学大会(dijkstra(朴素版)精讲)
117. 软件构建(拓扑排序) 继续边看解析边做题,思考时的问题做个如下的总结: 1. 存边用什么数据结构? 在题目中,我们需要存储节点之间的依赖关系(边信息)。选择适合的数据结构非常重…...

【NLP 16、实践 ③ 找出特定字符在字符串中的位置】
看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__(): 调用父类 nn.Module 的初始化方法,确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…...

费解的开关(bfs + 哈希表 or 递推)
题目描述: 25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。 我们用数字“1”表示一盏开着的灯,用数字“0”表示关…...

C语言——实现求出最大值
问题描述:利用C语言自定义函数求出一维数组里边最大的数字 //利用函数找最大数#include<stdio.h>int search(int s[9]) //查找函数 {int i , max s[0] , max_xia 0;for(i0;i<9;i){if(s[i] > max){max_xia i;max s[max_xia];}}return max; } in…...

基于微信小程序的短视频系统(SpringBoot)+文档
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

Flutter 中 Sliver 的各种装饰器介绍与使用
在 Flutter 中,Sliver 是一种可以在滚动视图中实现自定义效果的组件。Sliver 组件可以根据滚动位置动态改变其外观和行为。本文将介绍几种常用的 Sliver 装饰器及其使用方法。 1. SliverAppBar SliverAppBar 是一个可以随着滚动而变化的应用栏。它可以在用户向下滚…...
电感的基本概念
电感的定义: 电感一般是由导线绕成空芯线圈或带铁芯的线圈而制成。 当线圈中有电流通过时,线圈周围就会产生磁场,当线圈中流过的是直流电流时,线圆周围就会产生固定的磁场,线圈产生的物理现象就是电磁铁,当…...

linux基于systemd自启守护进程 systemctl自定义服务傻瓜式教程
系统服务 书接上文: linux自启任务详解 演示系统:ubuntu 20.04 开发部署项目的时候常常有这样的场景: 业务功能以后台服务的形式提供,部署完成后可以随着系统的重启而自动启动;服务异常挂掉后可以再次拉起 这个功能在ubuntu系统中通常由systemd提供 如果仅仅需要达成上述的场…...

HTTP协议和接口测试详解
介绍接口测试前我们先来介绍一下HTTP协议,为什么先要介绍HTTP协议呢因为因为我们做接口测试其实就是用测试工具(postman,fiddler,jmeter等等)或代码来模拟用户使用软件的场景,在我们模拟的时候不像平时功能测试时我们有已经开发完…...