当前位置:网站首页>偷题——腾讯游戏开发面试问题及解答
偷题——腾讯游戏开发面试问题及解答
2022-08-05 05:17:00 【博毅创为游戏圈】
##前言
Blake老师有个朋友在腾讯某分部做技术总监,负责的工作中就包含面试招聘。
那么,近水楼台先得月~Blake老师根据面试的问题,作出了以下解答,希望能帮到你顺利入职。
####01 Unity项目开发中程序如何愉快的与策划沟通?
在游戏开发中,策划希望能方便地改游戏数值,游戏数据,能够灵活的编辑一些规则,并且希望在改数据时不用问程序,马上就能抛出效果,策划在改规则的时候也希望如此。
规则一般体现在怪物AI等方面,数据一般提现在数值计算方面。
如果是怪物AI等行为编辑比较多的,我们可以提供给策划行为决策树等编辑工具,让策划编辑行为和决策。数值计算,我们提供好数值策划表解决方案,让策划非常方便的修改里面的数据表等。游戏的地图制作,也是策划经常要干预的地方,Unity项目开发中地图编辑器要做好。
##02 Unity项目开发如何避免多人开发是的提交冲突?
在团队项目开发中,由于大家各自开发格子的模块或同时开发交叉的模块,会导致一些项目提交时候的冲突,Unity开发中如何避免冲突或者有冲突的时候非常方便的合并呢?
提供几个经验供大家参考。
1、代码冲突的合并相对比较简单,文本合并即可,很多版本管理工具自动就能帮你合并好。即使有冲突,人眼很快就能解决,毕竟都是文本代码。
2、 游戏场景冲突就不那么好合并了,因为游戏场景本省不是文本,同时合并的时候可能会导致一些参数要重新指定等,所以很多Unity项目不会往场景里面放任何内容,而是把内容分成一个一个的预制体,每一个人负责一个预制体(视图)。尽量避免多人同时操作一个视图。
3、不要在视图节点上直接挂代码,也不要在代码上直接绑定视图的节点组件等,这些都不利于代码冲突解决,全部都通过代码来完成。
总结一下:避免多人修改同一视图,视图上不挂脚本,全部通过代码来控制逻辑,代码提交冲突非常方便解决。
####03 Unity Set Pass Call是什么?
绘制一个3D物体完成的流水线叫做Pass。
Unity引擎绘制物体之前,先要给GPU流水线来装载对应的Shader设置相关Shader参数,叫做SetPassCall。
Set Pass call发生在切换Shader的时候,这个性能开销也比较大,所以我们要尽量避免不断的设置与切换Shader,同时常用的Shader要缓存到内存里面,这样每次切换的时候速度会比较快。
####04 Unity DrawCall是什么?
Unity绘制一个场景的时候,把场景里面的物体分成几个批次提交给GPU绘制就是几个DrawCall。
####05 降低DrawCall对性能提升的意义是什么?
降低DrawCall,CPU可以把绘制的数据一次提交给GPU,比多次提交性能要好,同时GPU绘制的时候一次处理的越多,GPU的吞吐量就越多,就越能发挥GPU的性能。
####06 Unity 是单线程还是多线程的?
Unity可以支持用户自己开发使用多线程,比如用户做网络模块的时候,可以开一个线程来做网络消息的读取等。
Unity框架里面是两个线程,一个是main thread,一个是render thread, main thread负责业务逻辑线程,跑Mono代码,物理引擎代码等,render thread负责处理绘制相关,将绘制相关数据提交给GPU。
所以unity内部是多线程的,Unity的很多API与场景组件相关API必须要在main thread里面调用,不能在其他线程调用。
####07 Unity有哪些合批方式可以降低DrawCall
Unity合批的方式有静态合批,动态合批,与GPU Instancing合批,三种方式可以合并DrawCall。
####08 Unity 如何分析内存占用?
遇到内存问题的时候,我们经常不知道如何优化降低内存的占用,其实处理这样的问题并不难。
首先你要分析出来哪些地方占用的内存比较多,把内存占用比较多的地方分析出来才是优化的首要关键。
Unity提供了Profiler工具,可以查看内存的占用情况,如下图:
####09 Unity 如何分析性能热点?
项目开发时要对代码进行优化,提升代码性能。
提升代码性能要找出来哪些地方是性能的热点,才是最重要的。
假如你花了100分的力气,去优化一个,性能占用只有10%的地方,这样优化出来的效果也不会提升多少,所以我们优化性能一定要从优化热点下手。
如何找到性能优化热点呢?Unity提供了Profiler工具,帮我们把性能的热点函数都分析出来了,你可以根据时间占比,调用次数,来优化相关的时间。如图:
####10 Unity如何查看当前场景的DrawCall?
Unity如何查看当前的DrawCall, Unity可以通过profiler和Stats来查看当前DrawCall的占用,Stats 如下图:
Profiler如下图:
同样的职位,自然是大企业更有前途和“钱途”。
END
想知道大厂面试都问什么,请在文章下方评论后私信:大厂面试题 即可获取!!!
边栏推荐
猜你喜欢
随机推荐
虚幻引擎5都有哪些重要新功能?
CAN、CAN FD
[Intensive reading of the paper] R-CNN's Bounding box regression problem is detailed
OSPF故障排除办法
每日一题-两数相加-0711
网络通信及相关函数介绍
UE4美术你有必要了解的数学基础
WCH系列芯片CoreMark跑分
【UiPath2022+C#】UiPath 数据操作
电子产品量产工具(2)- 输入系统实现
物联网-广域网技术之NB-IoT
每日一题-DFS
[Database and SQL study notes] 9. (T-SQL language) Define variables, advanced queries, process control (conditions, loops, etc.)
读论文-Cycle GAN
三、自动配置源码分析
MySQL主从复制—有手就能学会的MySQL集群搭建教程
【ts】typescript高阶:模版字面量类型
对象比较
(C语言)动态内存管理
每日一题-三数之和-0716(2)