unity面试总结(项目篇)

项目:

头顶信息,科技树,换装

头顶信息:

2dUI做法

更新放在lateupdate之后

通过移除画布的方式隐藏

手动计算偏移量,不用layout组件

分区域布局

避免直接使用transform.position,缓存角色坐标

使用判断是否在视野范围内来判断是否更新

在一个job里面同时判断对象是否在视野范围内和把他的3d坐标转成2d坐标,计算这个角色的相关信息

判断是否在视野范围内:使用视口坐标判断,因为用六个面判断是主线程api

合批:逻辑关联,物理分层,文字层,图片层,特效层

如果要解决重叠问题,要自己处理深度测试

换装要求

骨骼要求:骨骼结构完全一致,空间位置零偏差,不同部分表现上同一位置的顶点收骨骼权重影响尽量相同(同一套基准骨骼(T-Pose))

零件贴图是按部位来规范固定大小(1024和512),合并后大图固定大小(2048)

贴图格式统一

算法:

装箱算法(先放大的再放小的) RectanglePacker库,存取骨骼层级使用的数据结构(字典)

UV 象限法的缺点:

空间浪费,精度死板,扩展性差

需要的工作:

动态生成basecolor的大图(根据优先级缩放贴图)

动态mask大图

动态法线大图

遮挡剔除,肚子被衣服挡住就剔除(合并时候剔除)

具体步骤:

1.加载各部位 SkinnedMeshRenderer

2.提取所有子 Mesh 的 CombineInstance(含顶点、UV)。

  1. 收集骨骼重映射的骨骼数组信息

4.合并颜色贴图,uv象限做法,固定uv分区

5.合并mesh,创建材质赋值新贴图

一定要自己创建材质吗

优化:

lod(动态选用的贴图大小)

固定贴图大小(预分配内存)

使用RenderTexture而不是texture

纹理压缩

缺点:

内存压力,合并贴图的计算压力

渲染基础:

mesh里面一个顶点应该是有切线,uv,法线的,只不过可以通过法线贴图来二次修改渲染时候使用的法线,没有法线贴图就是插值使用顶点的法线

renderer.material.mainTexture这个会生成一个新的材质,renderer.sharedMaterial这个不会

lua

Sprite.__index = Sprite的作用,"如果有人把我(Sprite)当成元表,且他在自己身上找不到某个东西,那就来我(Sprite)自己这里找。",没定义的话就算有元表也找不到

继承太多的耗时:table hash查找的耗时

相关推荐
郝学胜-神的一滴3 小时前
[简化版 GAMES 104] 现代游戏引擎 06:从Tick时序到邮局模型,拆解确定性世界的底层密码
开发语言·c++·游戏引擎·图形渲染·软件开发·opengl
鹿野素材屋1 天前
Unity超轻量级中文语音播报,仅5兆大小,无需联网即可使用,适用于弹幕、提示等动态语音播出
unity·游戏引擎
电子云与长程纠缠2 天前
UE5 Lyra PocketWorld进行3D内容UI预览 - 上
开发语言·学习·3d·ue5·游戏引擎
玖玥拾2 天前
Unity3D RPG 入门项目(八)游戏设置面板、帧率控制、快捷技能药品栏、技能解锁系统
游戏·3d·unity·游戏引擎
ellis19702 天前
u3d插件xLua[十] lua侧判空问题
unity
牛哇网络工作室2 天前
UnityHDRP写实数字人全流程基础5—语音输入和语音识别
android·unity·c#·游戏引擎·aigc·语音识别·xcode
ellis19703 天前
u3d插件xLua[九]例8 Hotfix
unity
淡海水3 天前
01-07-运行时-GC深度剖析-内存分配回收与结构选择
jvm·windows·unity·gc
优梦创客3 天前
游戏开发架构选型:第1篇|什么是架构?从进球事件看 MVC 的局限
unity·架构·游戏引擎·游戏开发
zhangphil4 天前
Unity3D(Unity)跨平台游戏引擎简介
unity