当前位置: 首页 > news >正文

CocosCreator面试真题详解

最近有位同学面试Cocos Creator,我们把面试时问道的真题列举出来,并配上参考答案。

问题1: 你们公司项目时如何做战斗系统的?

面试官你好,做战斗系统和架构的时候,我们一般把代码逻辑分成3层来设计,同时把数据独立出来,我们的项目设计如下,不同公司可能不一样,我们之前公司是这样做的:

1: 我们会把战斗中的功能,做成组件,比如,动画切换,伤害计算等; 我们叫做功能层;

2: 我们会把战斗单元做一个组件,比如Charactor, 然后让Charactor来has 功能组件,并在Charactor中提供标准的通用的策略,比如,行走,技能释放等; 同时不是的角色,我们会编写Player, Enemy等来继承自Charactor,并绑定对应角色的战斗数据,用战斗数据来驱动统一的逻辑;

3: 操作层:我们会把战斗中的操作独立出来,比如UI操作,网络事件,AI事件等,通过事件模块,来调用到战斗中的具体策略,这样,可以实现不同操作层来驱动战斗,调用战斗策略;

4: 战斗中的数据,我们一般都用excel表格来给策划填写,更具策划的游戏需求来制定好对应的数据格式。如果有必要,还可以做一些可视化工具(技能编辑器),来给策划使用,最后导出战斗数据。

5: 技能编辑器:可视化的制定技能的一些数据,比如buff时间,攻击时间,等具体要根据游戏需求来定;

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!

问题2: 项目中出现多个spine卡顿怎么办?

目前cocos creator 提供spine的动画组件,他有几种模式,性能最好的是预先Bake模式,就是把每个骨骼在某一帧的位置预先计算出来然后存起来,这样能提升性能。可以开启spine动画的合批模式,降低Drawcall,但是有限制,需要每个spine只有一种混合模式,一张贴图才能进行Drawcall合并。如果多个spine还是卡顿,那么就把spine换成帧动画,提升一些性能。

问题3: 百人同屏如何优化drawcall?

如果是2D游戏,只要保证角色的动画是同一个图集的帧动画(spine动画好像无法合批,待确认)就能最大限度地合批,同时把角色UI属性地相关内容,和原来的2D角色分开,把UI单独做,然后UI节点和角色节点做位置同步,这样,角色的动画就可以再一个图集合批,不会被自己的昵称,血条等打断合批。

如果是3D游戏,就要将3D动画的每个顶点的位置,Baker到一个纹理里面,然后使用GPU Instancing合批,来优化掉3D动画组件,从而合批,同样,UI等,都要单独独立开发,这样防止打乱合批。

问题4: 你们项目的场景切换是怎样做的?

目前主流的游戏开发中场景切换做法有3个,不同的公司可能不一样:

1:直接把场景做好,然后内容方场景里面,调用cocos API, 来直接加载与运行对应的场景;

2: 直接把场景做成场景资源,打入ab包中,来调用cocos API,从资源加载中加载场景,然后运行;

3: 直接只用一个场景,通过预制体来做相关的内容展示,不存在场景切换。

具体的选择,可以根据框架与项目来决定。比如,3D游戏中需要场景中做静态光照,我们就可以采用方法2,把场景看作是地图。比如简单的游戏就可以直接使用方法1 or方法3。

建议采用方法2, or 方法3。方法1最大的问题,是场景无法分ab包,全部都打入到main包里面,这样做分包的时候会有问题;

问题5: 动画的帧率是多少最为合适?

动画的帧率,要看,都可以,主要根据动画的类型来定,可以是15FPS, 30FPS, 60FPS.一般目前骨骼动画这些帧率都是控制在15~30FPS,有些可以是10FPS。具体要根据,帧率,资源大小等,做一个平衡,比如帧动画,帧过多,就会导致内存占用过大,帧过少,动画又不流畅。

问题6: Gpu Instance 怎么用的?

1: 要满足GPU instancing合批的条件,同一个材质,同一个shader,同一个mesh;

2: 渲染的时候,不能被别的物体打乱;

3: 在材质的地方勾选Gpu instancing选项,就可以实现Instancing 合批;

问题7: 你在游戏开发中是如何做内存管理得;

面试官你好,关于使用Cocos Creator开发做内存管理,可能需要注意得点,我是这样看的:

Cocos Creator开发游戏的内存占用主要是由以下部分组成,

1: 逻辑数据的内存占用,比如,节点,组件实例,字符串对象等;

2: 纹理,模型顶点等显存的内存占用;

3: 就是加载资源,场景切换过程中的一些中间状态的内存占用,比如,解码一个png的图片到内存,可能会要从资源里面把资源数据读到内存中再解码。

对于3的中间状态,最终会被引擎所释放,我们只要关注切换,加载时候的内存峰值,不要让内存峰值引发奔溃就可以了,如果内存峰值很高,这个时候,我们可以考虑

延后加载等。具体还要根据项目来定位。

对于2,我们一般是把不用的资源即时的给他释放掉,这个时候,我们做资源管理的时候,要尽量的把同一个功能场景的资源,打入一个ab包,这样,用的时候整个ab包都用,不用的时候都可以释放。

对于2,我们只要根据内存的峰值情况,再特定的时机,把不用的资源释放掉即可,如果我们的内存可以承受,那么可以不释放。

对于1, TypeScript/JavaScript 一般的都有垃圾回收的机制,我们一般不用考虑释放的问题,直接new 就可以了,但是也要避免大量的反复的new, 比如,在update里面不断地new 一个对象;

这种要尽量地避免。当我们地内存出现峰值地时候,可以主动地启动垃圾回收来进行回收处理。对于大量反复创建地节点,我们可以考虑使用缓存池来处理,这样避免直接像系统反复地new/free。

目前是我对Cocos Creator开发,关于内存要注意地点,可能有遗漏,具体项目还要根据实际情况具体分析。

问题8.你认为怎样的编码才算规范?

编码规范这个不同的项目,不同的公司可能要求不一样,我理解的规范的代码,大概从几个方面讲:

1: 用英文来做好命名,命名要能代表函数or变量or类的功能和作用,命名的习惯可以统一,比如

私有变量用_开头等;

2: 要注意权限,改私有的私有,改公有的公有;

3:命名规范的时候,可以和引擎做适当的一些区分;

4: 把逻辑流程的代码与具体功能代码来分开,流程代码负责流程,功能代码负责具体功能。

5: 写代码要符合项目的真实性,符合大家的习惯性认识,尽量少造概念等。

6:注释的一些要求,如果看具体项目和公司的团队成员的水平与协作来决定注释要写到什么程度

...

具体不同的项目规范不一样,还是可以提前规划好。

相关文章:

CocosCreator面试真题详解

最近有位同学面试Cocos Creator,我们把面试时问道的真题列举出来,并配上参考答案。 问题1: 你们公司项目时如何做战斗系统的? 面试官你好,做战斗系统和架构的时候,我们一般把代码逻辑分成3层来设计,同时把数据独立出…...

线性代数 第七讲 二次型_标准型_规范型_坐标变换_合同_正定二次型详细讲解_重难点题型总结

文章目录 1.二次型1.1 二次型、标准型、规范型、正负惯性指数、二次型的秩1.2 坐标变换1.3 合同1.4 正交变换化为标准型 2.二次型的主要定理3.正定二次型与正定矩阵4.重难点题型总结4.1 配方法将二次型化为标准型4.2 正交变换法将二次型化为标准型4.3 规范型确定取值范围问题4.…...

国内外网络安全政策动态(2024年8月)

▶︎ 1.《关于进一步加强智能网联汽车准入、召回及软件在线升级管理的通知》公开征求意见 8月1日,工业和信息化部装备工业一司联合市场监管总局质量发展局组织编制了《关于进一步加强智能网联汽车准入、召回及软件在线升级管理的通知(征求意见稿&#…...

重心映射:坐标系统与边界处理策略

重心映射 在许多应用中,特别是在计算机图形学中,现在通常使用三角形网格形式的分段线性曲面工作,在本课程笔记的剩余部分,我们将主要坚持使用这种类型的曲面。 3.1 三角形网格 如前一章所述,让我们用 $ p (x,y,z) $ …...

python-网页自动化(二)

获取元素属性 1. 获取属性 以百度首页的logo为例&#xff0c;获取logo相关属性 <img hidefocus"true" id"s_lg_img" class"index-logo-src" src"//www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" width"270…...

QT实战 商城客户端开发

需要qt先配置mysql cmake编译 一共2个文件 第一个导入数据库&#xff0c;mysql数据库密码在main.cpp里修改成你自己的&#xff0c;然后打开导入即可 第二个是客户端&#xff0c;mysql数据库密码在BasicWindow.cpp里修改成你自己的...

使用Java增删改查数据库

文章目录 前言一、PrepareStatement类是什么&#xff1f;二、实操展示 1.增2.删3.改4.查总结 前言 既然连接数据库都可以通过java语言实现&#xff0c;那么通过java语言对数据库进行增删改查的操作自然是顺理成章的事情了。 一、PrepareStatement类是什么&#xff1f; PrepareS…...

NAND发货量增长放缓,2024 Q2营收增长14%

根据市场研究机构TrendForce Corp.于2024年9月9日发布的报告&#xff0c;2024年第二季度NAND闪存发货量增长放缓&#xff0c;但营收增长了14%&#xff0c;主要受人工智能&#xff08;AI&#xff09;固态硬盘&#xff08;SSD&#xff09;需求的推动。 NAND闪存市场概况 2024年…...

2024年9月13日 十二生肖 今日运势

小运播报&#xff1a;2024年9月13日&#xff0c;星期五&#xff0c;农历八月十一 &#xff08;甲辰年癸酉月庚辰日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;猴、鼠、鸡 需要注意&#xff1a;牛、兔、狗 喜神方位&#xff1a;西北方 财神方位&#xff1a;…...

Maven 常见问题以及常用命令

常见问题 &#xff1a; 1. 识别不了maven项目 mvn clean install -Dmaven.test.skiptrue //构建 2. 打jar包时报异常 指定下jdk版本 常用命令&#xff1a; mvn clean mvn package mvn install mvn deploy...

自定义分区

通过简单例子了解partition分区类的重写方法 分区是在MR的过程中进行的&#xff0c;属于Shuffle阶段 但是在Job端不要忘记进行调用&#xff1a;job.setPartitionerClass(xxx.class) 按照年龄分区&#xff1a; class AgePartitioner extends Partitioner<MyComparable, N…...

计算机三级 - 数据库技术 - 第十四章 数据仓库与数据挖掘 笔记

第十四章 数据仓库与数据挖掘 内容提要&#xff1a; 了解数据仓库相关技术了解数据仓库的设计、建造、运行及维护了解OLAP及多维数据模型了解数据挖掘技术 决策支持系统(DSS)&#xff1a;综合利用大量数据有机组合众多模型(数学模型和数据处理模型)&#xff0c;通过人机交互&a…...

低代码移动端集成:简化开发、提升用户体验的利器

什么是低代码平台&#xff1f; 低代码平台是一种开发工具&#xff0c;它允许用户通过图形化界面而非传统编程语言来构建应用程序。这种平台通过可视化的拖拽组件和配置&#xff0c;显著简化了应用开发过程。用户可以在这些平台上快速创建功能模块、设计用户界面&#xff0c;并…...

Redis入门1

Redis简介 Redis是一个基于内存的 key-value 结构数据库。 基于内存存储&#xff0c;读写性能高 适合存储热点数据(热点商品、资讯、新闻) 企业应用广泛 官网:https://redis.io 中文网:https://www.redis.net.cn/ window版启动命令 redis-server.exe redis.windows.con…...

SHT20温湿度传感器的C语言驱动

SHT20 是一款高精度的温湿度传感器&#xff0c;常用于环境监测和自动化控制系统中。以下是 SHT20 温湿度传感器的 C 语言驱动示例&#xff0c;展示了如何通过 I2C 通信与 SHT20 传感器进行通信以获取温度和湿度数据。 驱动流程 初始化 I2C 通信发送命令读取温度或湿度数据解析…...

系统架构师考试学习笔记第四篇——架构设计实践知识(16)层次式架构设计理论与实践

本章考点&#xff1a; 大纲,本课时知识点会涉及单选为题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。本课时知识架构如图1…...

顶踩Emlog插件源码

源码介绍 顶踩Emlog插件源码 前些天看到小刀娱乐网的文章页面有了一些变化&#xff0c;那就是增加了一个有价值/无价值的顶踩按钮。 样式也是非常的好看 再加上两个表情包是非常的有趣。 写到了Emlog系统&#xff0c;效果如上图。 如何使用&#xff1a; 需要在echo_log.…...

国庆出游季,南卡Runner Pro5骨传导耳机让旅途更完美!

国庆长假将至&#xff0c;无论是计划一场远行还是近郊的户外活动&#xff0c;一款适合的耳机都能让旅途更加愉快。南卡Runner Pro5骨传导耳机以其独特的设计和功能&#xff0c;成为了国庆出行的理想伴侣。 首先&#xff0c;骨传导耳机通过颅骨传递声音&#xff0c;避免了传统耳…...

HarmonyOS NEXT 封装实现好用的网络模块(基于最新5.0的API12)

在 HarmonyOS-NEXT 开发中&#xff0c;网络请求是应用开发中不可或缺的一部分。为了提高开发效率和代码复用性&#xff0c;我们可以封装一个好用的网络模块组件。本文将介绍如何在 HarmonyOS-NEXT 中封装一个功能强大且易于使用的网络模块组件。 封装目的 网络模块使用的频率最…...

Visual Studio提示:无法安装CPpython.Exe.x64

如果你需要在Visual Studio中使用python环境&#xff0c;而且你本身已经有一个python环境&#xff0c;则只需要将你自己的python环境配置到Visual Studio中即可&#xff0c;可以无视如题报错&#xff0c;将不会产生实质性的问题或影响。 解决办法&#xff1a; 工具->获取工…...

轻量级工具G-Helper:一站式解决ROG游戏本色彩配置异常问题

轻量级工具G-Helper&#xff1a;一站式解决ROG游戏本色彩配置异常问题 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目…...

实战应用:使用autoclaw在快马平台快速开发销售数据监控看板

最近在做一个销售数据监控看板的需求&#xff0c;发现用autoclaw配合InsCode(快马)平台可以快速实现从开发到部署的全流程。整个过程比想象中顺畅很多&#xff0c;特别适合需要快速验证业务场景的情况。这里记录下具体实现思路和关键点&#xff1a; 数据准备与连接 首先用autoc…...

Pixel Fashion Atelier保姆级教程:从INSERT COIN按钮到像素粒子物理引擎解析

Pixel Fashion Atelier保姆级教程&#xff1a;从INSERT COIN按钮到像素粒子物理引擎解析 1. 像素时装锻造坊简介 像素时装锻造坊是一款融合了复古游戏美学与现代AI技术的图像生成工具。它基于Stable Diffusion和Anything-v5模型构建&#xff0c;专为时尚设计和像素艺术创作而…...

如何高效访问优质内容?bypass-paywalls-chrome-clean工具全方位使用指南

如何高效访问优质内容&#xff1f;bypass-paywalls-chrome-clean工具全方位使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代&#xff0c;大量优质内容被…...

HP-Socket技术演讲视频描述撰写指南:关键词与吸引力

HP-Socket技术演讲视频描述撰写指南&#xff1a;关键词与吸引力 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket是一款高性能跨平台网络通信框架&#xff0c;专为…...

OpenClaw安全实践:私有化Qwen3-VL:30B保障敏感数据不出境

OpenClaw安全实践&#xff1a;私有化Qwen3-VL:30B保障敏感数据不出境 1. 为什么我们需要私有化部署 去年处理一份法律合同时&#xff0c;我犯了一个至今心有余悸的错误——把客户保密协议上传到某公有云AI进行条款分析。虽然及时删除了文件&#xff0c;但那种"数据已脱离…...

Qwen3-0.6B-FP8快速上手:无需CUDA环境的CPU友好型大模型对话工具指南

Qwen3-0.6B-FP8快速上手&#xff1a;无需CUDA环境的CPU友好型大模型对话工具指南 想体验大模型对话&#xff0c;但被动辄几十GB的模型和昂贵的显卡劝退&#xff1f;今天给大家介绍一个“小钢炮”——Qwen3-0.6B-FP8对话工具。它只有6亿参数&#xff0c;经过FP8量化后体积小巧&…...

第12课:从 SPI 环路、CAN 通信到 SD 与 eMMC 存储实战

本节路线图 先把三条主线分开:控制总 → SPI环路测试:先把时序 → CAN:换一条总线,世界 小猫提醒 这节有分区、烧录或删除类操作,先确认盘符和路径,再按回车。 如果说上一课的关键词是“事件、时间和系统能力”,那这一课的关键词就是“总线、协议和数据落地”。 我们要…...

Wan2.2-I2V-A14B开源大模型:支持ONNX导出与边缘设备轻量化部署探索

Wan2.2-I2V-A14B开源大模型&#xff1a;支持ONNX导出与边缘设备轻量化部署探索 1. 开箱即用的私有部署方案 Wan2.2-I2V-A14B是一款强大的文生视频开源大模型&#xff0c;专为RTX 4090D 24GB显存环境深度优化。这个私有部署镜像已经内置了完整的运行环境和所有必要组件&#x…...

好看不等于会交互!阿里发布基于交互的世界模型基准

视频生成技术正在以惊人的速度迭代&#xff0c;那些光影绚丽的画面常常让人惊叹人工智能的创造力&#xff0c;但当你仔细观察视频中的物理碰撞或物体运动时&#xff0c;会发现它们常常并不符合现实世界的常识。由阿里、中科院、北航和北邮的研究人员联合推出的 Omni-WorldBench…...