赞
踩
最近面试了几家公司,对问到的问题汇总一下。
这个题靠记忆答的答错了,是左手坐标系。
大拇指指的方向是X轴,食指指的方向是Y轴方向,中指指的方向Z轴方向。
组件会被实例化,可以在组件中写构造函数,在构造函数中打日志验证。但是组件中的Awake、Start 函数并不会执行。
DrawCall 是CPU准备数据向命令缓存区添加命令,GPU读取命令并执行渲染的过程。其中准备数据包括加载渲染对象、设置渲染状态。
加载渲染对象需要从硬盘加载到内存,从内存加载到显存。
设置渲染状态 设置渲染对象的材质、纹理、着色器。
DrawCall 过程中,CPU像命令缓存区添加命令,GPU执行渲染,这个过程中CPU的运行要比GPU缓慢的多,导致GPU一直在等待CPU。所以要减少DrawCall 也就是减少等待GPU等待时间。
不论是静态批处理还是动态批处理都需要相同的材质。
- 静态批处理
需要勾选Static
静态合批会生成合并网格(造成内存损耗)。
- 动态批处理
仅支持顶点数小于900的网格物体
渲染管线的工作室将3D模型转换成2D图像并显示在屏幕上。
渲染管线分为向前渲染管线与延时渲染管线。
向前渲染管线是每一帧都会对场景中所有物体进行渲染,延时渲染是将场景在中的物体存储在缓冲区,再进行渲染。
向前渲染管线的工作流程
不知道怎么说,ab,resource 。引用计数方法。。。市面上很多现成的资源管理插件,GF只带强大的资源管理,XAsset资源管理 YooAsset资源管理。
假设有向量a 和向量b
点积
点积的结果是标量。表示 a 在 b方向的投影长度。可以计算表示两向量的方向是否相同
公式
a
⋅
b
=
x
1
x
2
+
y
1
y
2
+
z
1
z
2
a · b = x₁x₂+y₁y₂+z₁z₂
a⋅b=x1x2+y1y2+z1z2
a
⋅
b
=
∣
a
⃗
∣
∣
b
⃗
∣
c
o
s
θ
a · b = |\vec{a}| |\vec{b}| cosθ
a⋅b=∣a
∣∣b
∣cosθ
叉积
叉积是一个新的向量。叉积的模等于两向量构造的平行四边形面积。
叉积的公式有个记法。 写两遍 xyzxyz
然后
第一个字母开始 xy => z
第二个字母开始 yz => x
第三个字母开始 zx => y
前面的字母表示相乘,后面的字母表示应该在哪个轴
(
a
x
,
a
y
,
a
z
)
×
(
b
x
,
b
y
,
b
z
)
=
(
a
y
b
z
−
a
z
b
y
,
a
z
b
x
−
a
x
b
z
,
a
x
b
y
−
a
y
b
x
)
(a_x,a_y,a_z) ×(b_x,b_y,b_z) = (a_yb_z-a_zb_y,a_zb_x-a_xb_z,a_xb_y-a_yb_x)
(ax,ay,az)×(bx,by,bz)=(aybz−azby,azbx−axbz,axby−aybx)
设有向量a 与向量 b 两向量的叉积为 c向量
则有公式
∣
c
⃗
∣
=
∣
a
⃗
∣
∣
b
⃗
∣
s
i
n
θ
|\vec{c}|=|\vec{a}| |\vec{b}| sinθ
∣c
∣=∣a
∣∣b
∣sinθ
UI 屏幕适配 有四种
1. 按固定宽比例适配
2. 按固定高比例适配
3. 取 宽 高比例的最小值进行缩放 这种方式最安全
4. 取 宽 高比例的最大值进行缩放 宽高可能会超出屏幕外
正交摄像机没有透视效果,一般用来制作2d游戏
透视摄像机有透视效果
我有点懵,在网上没找到合适的答案,我觉的合适就好,离摄像机近就大,离摄像机远就小。
如果是FGUI,有占位符 使用 GoWapper 这个类可以让3d物体显示在UI上面。
如果是UGUI,可以使用深度更高的摄像机,这个方法,不能出现UI遮挡,还可以使用 RenderTexure 来处理。
如果是用精灵渲染器来做UI 可以修改渲染器的 Order In Layer
嗐、一时间我也想不起遇到过什么难题,怎么解决的了。
单独写个文
E表示实体,C表示组件,S表示系统。
其中组件中只存储数据挂在实体上。E表示实体,用来添加组件来实现功能。S表示系统,用来处理逻辑修改数据。ECS中通常还要个游戏世界类用来管理所有的实体,已经触发系统逻辑。
ET框架中 弱化了EC概念,一切皆实体。实体上可以挂载组件,组件上可以挂载实体。其中系统是用接口实现,以及扩展方法来处理的。
M表示Model,V表示视图,C表示控制器。
其中Model是用来存储数据,并提供操作逻辑支持。视图提供用户交互,显示等处理。控制器是Model与视图之间的桥梁。用来控制展示界面。
单例模式、原型模式、建造者模式、状态模式、观察者模式。
详细看这:https://blog.csdn.net/qq_27461747/article/details/130834461
Socket 是协议控制层
WebSocket 是应用层
WebSocket 是更高层的协议,更简单易用。Socket 更容易扩展。
WebRequest 进行下载后得到 byte[], 可以转换为 AudioClip。
面试官还问我怎么转。。。 这谁记得
二维数组定义格子。有点定义,点类下面有一个属性,表示空的格子,蛇,或者是食物。
每隔一定时间,蛇头按按键上下左右控制往前填充一格,如果填充的格子没有食物,蛇的末尾格子设置为空格。如果填充的格子有食物,在空格中找个随机找个格子设置为食物。如果填充的格子是蛇,那么游戏结束。
详细看这:https://blog.csdn.net/qq_27461747/article/details/106690890
Layer 一般来做两个事,一个是控制摄像机可设置可以现实的Layer。另一个是可以设置 相互可碰撞的层。
Awake Start enable Update LateUpdate FixedUpdate disable OnDestroy
Awake 如果GameObject在启动的时候是Activity false不会被调用
Start 如果组件在启动的时候enbale = false 时不会被调用
enable 和 disable 是一对函数 一个是组件启用的时候调用 一个是组件禁用的时候调用
OnDestroy 和 Awake 是一对函数,如果组件执行了Awake 那么在组件销毁时会执行OnDestroy, 如果未执行过Awake那么将不会执行OnDetroy。
Update 是每帧更新
LateUpdate 是在Update 之后执行的更新 LateUpdate 一般用来做摄像机的跟随
FixedUpdate 是固定帧,不受帧率影响,如果用到物理方面的东西,需要在FixedUpdate中处理。
答案在上面
下次面试到新题再做补充
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。