Unity3D面试问题

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

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

言归正传:

  • 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是对数组的一层封装。数组的长度会动态增长。重新分配数组会有一定性能开销。

时间: 2024-10-20 03:48:24

Unity3D面试问题的相关文章

Unity3D面试高频知识点

数据结构和算法很重要!图形学也很重要!大的游戏公司很看重个人基础,综合能力小公司看你实际工作能力,看你的Demo. 1.什么是渲染管道? 是指在显示器上为了显示出图像而经过的一系列必要操作. 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去. 主要步骤有: 本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化. 2.如何优化内存? 有很多种方式,例如 1.压缩自带类库: 2.将暂时不用的以后还需要使用的物体隐藏起来

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

本来想写一个系列的,一半是抨击现在面试之水,要人之奸,用大哥的话说,要走新手是做螺丝钉和抹布用的.另一半是对出出学校的或者是自废武功转3d的朋友们提供一个比较有价值的参考.不过我时间实在仓促.没有保证,写一点算一点吧.先识别一下,你到了公司会让你干什么:1.UI(面试题会偏向NGUI等ui操作,会考到一些简单的排序算法,数据结构,问题处理思路等)2.数据逻辑层(会考到数据结构的搭配,配置表的构造等)3.游戏控制流程(会考到状态机的设计,与服务器协议的设计,以及少量lua或python脚本编写内容

unity3d 我的面试经历

昨天在上海的一家公司面试成功了 这是我第一次面试,也是我的第一份工作 先上我的简历给大家参考下吧 个人简历 个人信息: 姓 名: 廖旭升         学 历: 无 民 族: 汉               专 业: 无 性 别: 男               所在地:江苏张家港 年 龄: 21岁            电 话: 1515********* E - mail:[email protected]              QQ:6087537 求职意向: Unity3D手游客户

Unity3D专访——真正的面试

本来想写一系列的,一半的攻击,现在面试的水.人之奸,用大哥的话说,要走新手是做螺丝钉和抹布用的.还有一半是对出出学校的或者是自废武功转3d的朋友们提供一个比較有价值的參考. 只是我时间实在仓促.没有保证.写一点算一点吧. 先识别一下,你到了公司会让你干什么: 1.UI(面试题会偏向NGUI等ui操作,会考到一些简单的排序算法,数据结构.问题处理思路等) 2.数据逻辑层(会考到数据结构的搭配.配置表的构造等) 3.游戏控制流程(会考到状态机的设计,与server协议的设计.以及少量lua或pyth

论unity3d简历的重要性

大家好,我是灰太狼,看到好多unity3d学员说学unity3d,毕业找不到工作,我很是不解,但是当我看到一个泰课学员的简历(对不起石峰弟弟,我又卖你了),我才明白,原来是简历写的不好,不会包装自己,今天写这篇文章就是告诉大家找工作其实很简单,就是你们简历写的太差,所以我写了这篇文章希望对你找工作有帮助. 第一.简历的格式:(A4纸,1.5倍行距,小四号字) 1.填“现居住地”,不要填“户籍所在地”.(现居住地不是你现在住的地方,而且你要找工作的地方,比如你想去上海找工作,但是你现在在合肥,那你

[原]unity3d之http多线程异步资源下载

郑重声明:转载请注明出处 U_探索 本文诞生于乐元素面试过程,被面试官问到AssetBundle多线程异步下载时,愣了半天,同样也被深深的鄙视一回(做了3年多u3d 这个都没用过),所以发誓要实现出来填补一下自己的空白,同时分享给大家.说明:本人只在pc和Android下测试好使,其他平台未知! 直接贴代码,都是C# http的API,不懂得自己百科. using UnityEngine; using System.Collections; using System; using System.

unity3d最新面试题与参考答案汇总

1.在类的构造函数前加上static会报什么错?为什么? 构造函数格式为 public+类名,如果加上static会报错(静态构造函数不能有访问修饰符)原因:静态构造函数不允许访问修饰符,也不接受任何参数: 无论创建多少类型的对象,静态构造函数只执行一次: 运行库创建类实例或者首次访问静态成员之前,运行库调用静态构造函数: 静态构造函数执行先于任何实例级别的构造函数: 显然也就无法使用this和base来调用构造函数. 2.C# String类型比stringBuilder类型的优势是什么? 如

长期寻求Unity3d工作

最近在学Unity,也在试着做一些demo 寻求Unity3d客户端工作一份. 坐标:福州.由于家庭原因没有离开的打算,接受短期的出差,有木有的福州的朋友~~ 爱游戏,爱生活,技术宅, 目前职业情况:就职于创业型公司,福州地小,不报名字了哈. 工作主要内容:lua客户端.我主要负责UI部分全部功能. 项目规模:重度手游(无限加班中%>_<%) 工作经验:工作经验都是过去的,转换手游大半年,简历就不多写了,简历可以造假,面试可以临场发挥,现在把博客当做简历,虽然现在工作非常的忙碌(每天10小时以

《Unity3D/2D游戏开发从0到1》正式出版发行啦

书籍信息:   书籍的名称: <Unity3D/2D 游戏开发从0到1>   书号(ISBN): 978-7-121-26239-5    出版社: 电子工业出版社   发行时间:2015年7月1日 写作背景:    2015年6月30日我收到电子工业出版社张迪老师寄来,正式发行的<Unity3D/2D游戏开发从0到1>书籍.这本凝结着大半年心血的作品让我感慨万千.   本人从事游戏.软件与教学十多年,一直梦想可以进一步服务于全国广大的游戏与软件从业开发人员.14年下半年电子工业出