注意,是问题,不是笔试题哦。这些是我最近面试北京各公司总结的一些被问到的还算典型的问题。跟大家分享一下。答案是我自己的,不保证标准和完整。

哎,公司年底开人,又校招一群便宜的小鬼……桑死心了……好在找到工作了。

言归正传:

  • NGUI在不同屏幕分辨率下如何适配?
NGUI本身是按照高度进行适配。NGUI按照目标设备的高度(targetHeight)与设置好的高度(manualHeight)的比值来进行适配。如果宽高比是一样的,则总可以完美适配。但如果不一致,则可能会出现左右两边有黑边(比设备宽高比小)或左右两边被裁减(比设备宽高比大)的情况。因此可以用代码手动修改Camera.orthographicSize来调整与目标屏幕大小的比率。
 
UI元素的定位可以用UIAnchor。
 
UIRoot的ScalingStyle选项有PixelPerfect,FixedSize,FixedSizeOnMobile几个值。使用FixedSizeOnMobile保证UI元素大小不会变化。
 
  • NGUI如何减少DrawCall?
尽量将图素打到一张贴图中,使用同一个材质做一个atlas。并且相同atlas的UI对象,深度要相邻或相同。否则就会产生额外的DrawCall。

 
  • 内存优化
使用资源池,缓存需要反复使用的GameObject。数量可以根据需求动态增长和缩减。

对图片使用MipMap。
Object销毁要调Destroy,AssetBundle销毁要调用Unload(false)。但这样还不够,适当时候调用Resources.UnloadUnusedAssets()方法释放游戏资源。
谨慎使用静态变量来引用GameObject。很可能会造成资源释放不干净。
切换场景时,在OnDestroy方法中对场景资源进行释放。
尽量使用struct,不用class。
字符串拼接操作比较多时,使用StringBuilder。
 
  • 性能优化
尽量使用相同的材质,方便batch。而且引用时使用sharedMaterial。

尽量不使用实时光照,使用光照贴图。修改Quality的PixelLightCount来降低光照计算开销。
尽量少用AlphaTest的Shader。最好使用Mobile目录下的Shader。
不会动的物体勾选static选项。如果身上有碰撞体,最好不要改变它们位置。
降低物理计算的更新频率。修改Time的Fixed Timestep。
降低模型的面数。多用纹理来表现细节。可以考虑使用LOD
 
  • 减小包大小
对图片启用压缩。对Mesh启用压缩。对动画启用关键帧压缩。

对Mesh的Normals,Tangents选项勾选None。它们只有在使用实时照明,法线贴图时使用。
优化网格。
少使用System的类库。例如System.Xml。可以使用更加小巧的第三方插件。
使用Release Build而不是Debugging Build。
启用Stripping Level。
将Api Compatibility Level设为.NET 2.0 Subset。
在Console面板点击Open Editor Log,查看打包时的log。
 
  • NGUI如何减少DrawCall
尽量将图素合并在一张贴图使用一个材质。使用相同Atlas的元素的深度值要相邻或相同。

 
  • Dynamic Batch的条件

顶点数小于300.如果shader使用了Vertex Position, Normal, UV0, UV1 and Tangent,那么只有180.

使用相同的材质。
使用了相同的transform scale.
如果shader使用了多个pass,不能batch。
接受实时阴影的模型,不能batch。
 
  • 使用了什么插件?
PureMVC

LitJson
C# Lite
A* Pathfinding  Project 
NGUI
RVO 
Thrift 
 
  • NGUI如何屏蔽3D场景的事件响应?
UICamera.Raycast(mousePosition, out uiHitInfo)

UICamera这个静态方法可以检测是否点击到某个UI元素。可以在3D场景的事件响应时做这一层拦截。
 
  • 向量点乘叉乘的几何意义
点乘可以得到一个数值。一般用来确定两向量的夹角。
叉乘可以得到与两向量垂直的一个向量。一般用来计算法线或者确定平面。
  • 介绍一下图形渲染管线。

这是CG教程里的编程渲染管线示意图。横线上面是在CPU中处理,下面是在GPU计算。
顶点着色阶段进行坐标变换。模型空间->世界空间->视角空间->投影空间。
图元装配段进行消隐处理。
网上相关教程很多……大家自己查阅……
 
  • Dictionary<K,V>与HashTable的区别?
Dictionary<K,V>是泛型,K,V的类型预先已经确定。而HashTable内的K,V类型不定。Dictionary<K,V>如果顺序地Add,元素是有序的。而HashTable内部是无序的。当K是值类型时,Dictionary<K,V>的速度要比HashTable快。因为值类型在HashTable内会进行装/拆箱。

 
  • LinkedList与List的区别?插入删除、查询谁快?
LinkedList实际是一个双向链表。List是对数组的一层封装。数组的长度会动态增长。重新分配数组会有一定性能开销。

 

转载于:https://www.cnblogs.com/sigmadruid/p/4078263.html

Unity3D面试问题相关推荐

  1. Unity3D面试ABC

    Unity3D面试ABC 杨航最近在学Unity3D 最先执行的方法是: 1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdate.LateUpdate].4.( ...

  2. Unity3D面试——真实的面试,unity3d面试

    本来想写一个系列的,一半是抨击现在面试之水,要人之奸,用大哥的话说,要走新手是做螺丝钉和抹布用的.另一半是对出出学校的或者是自废武功转3d的朋友们提供一个比较有价值的参考.不过我时间实在仓促.没有保证 ...

  3. 续上文,Unity3D面试ABC

    最先执行的方法是: 1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdate.LateUpdate].4.(渲染模块)OnGUI.5.再向后,就是卸载模块(TearD ...

  4. 这种Unity3D面试题目,你面的是什么岗啊?

    光照渲染题 1.笔试题,使用HDRP的后期处理POST-processing有什么用? 2.实操题,使用HDR天光的环境反射,配合CGSOSO,可以用任何.各种着色渲染的各种插件,对场景(场景有白天和 ...

  5. Unity3D面试——真实的面试

    本来想写一个系列的,一半是抨击现在面试之水,要人之奸,用大哥的话说,要走新手是做螺丝钉和抹布用的.另一半是对出出学校的或者是自废武功转 3d 的朋友们提供一个比较有价值的参考.不过我时间实在仓促.没有 ...

  6. Unity3D 面试ABC

    最先执行的方法是: 1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdate.LateUpdate].4.(渲染模块)OnGUI.5.再向后,就是卸载模块(TearD ...

  7. 《学Unity的猫》——第十八集:Unity3D游戏开发工程师笔试刷题,皮皮收到面试邀请

    文章目录 18.1 皮皮收到面试邀请 18.2 面试题库相关网站 18.2.1 牛客网 18.2.2 领扣LintCode 18.2.3 力扣LeetCode 18.3 优质学习网站 18.3.1 菜 ...

  8. Unity3D专访——真正的面试

    本来想写一系列的,一半的攻击,现在面试的水.人之奸,用大哥的话说,要走新手是做螺丝钉和抹布用的.还有一半是对出出学校的或者是自废武功转3d的朋友们提供一个比較有价值的參考. 只是我时间实在仓促.没有保 ...

  9. Unity3d高频率面试题目(选择题)

    Material(材质球) [选择(多选或者单选)] 在Unity中,材质(Materials)主要是用来把()贴到游戏对象上.(AB) A Mesh B Particle Renderers C T ...

最新文章

  1. EOS技术及生态系统介绍
  2. 网站使用mysql_使用网站的mysql
  3. 戏说模式-追MM与设计模式 (转载)
  4. NetBeans 时事通讯(刊号 # 67 - Aug 04, 2009)
  5. Juniper srx系列防火墙端口限速
  6. java编译容器_Java基础:容器
  7. 安装Genymotion步骤,启动模拟器时显示CPU不支持虚拟化—解决方法:惠普主机开启VT虚拟化CPU
  8. 计算机硬件故障解决方法,计算机硬件故障分析与解决方法
  9. 网卡5790c linux驱动,(支持所有硬件、无需连接宽带)e驱动 v5.21 WIN7 32bit专版驱动包...
  10. 计算机分屏显示知识,如何使用Windows的分屏显示功能
  11. 乐视第4代超级电视引领行业风向标
  12. java file seek_Java RandomAccessFile seek()方法
  13. 目前流行的装修风格_目前流行的装修风格
  14. git switch 与 git checkout的不同
  15. 查找2-n之间素数的个数
  16. 深度学习之DeepCTR
  17. 如何科学(mianfei)使用百度文库
  18. 常熟理工php实验三_常熟理工Oracle实验三_高燕教授
  19. java开发:mysql
  20. 关于“搭桥”游戏生成随机地图的设计思路

热门文章

  1. tab 切换显示网页链接的标签_chromium如何管理Tab
  2. python多继承_Python多继承,__init__
  3. Bitwise聘请前联邦检察官Katherine Dowling担任总法律顾问
  4. Blockchain.com将于今日7:59暂停XRP交易
  5. SAP License:跨行如何转入SAP
  6. 赛锐信息-AMS系列产品简介
  7. 存量客户管理之提额降息
  8. Excel-基本操作
  9. js事件委托或事件代理
  10. 记一次css载入指定url失败