Transform 父类是 Component
三十一:向量的点乘、叉乘以及归一化的意义?
1.点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影 2.叉乘得到的向量垂直于原来的两个向量
3.标准化向量:用在只关系方向,不关心大小的时候
三十二:为何大家都在移动设备上寻求U3D原生GUI的替代方案
不美观,OnGUI很耗费时间,效率不高,使用不方便
三十三:请简述如何在不同分辨率下保持UI的一致性
NGUI很好的解决了这一点,屏幕分辨率的自适应性,原理就是计算出屏幕的宽高比跟原来的预设的屏幕分辨率求出一个对比值,然后修改摄像机的size。UGUI通过锚点和中心点和分辨率也解决这个问题
三十四:什么是LightMap?
LightMap:就是指在三维软件里实现打好光,然后渲染把场景各表面的光照输出到贴图上,最后又通过引擎贴到场景上,这样就使物体有了光照的感觉。
三十五:Unity和cocos2d的区别
1. Unity3D支持C#、javascript等,cocos2d-x 支持c++、Html5、Lua等。 2. cocos2d 开源 并且免费
3. Unity3D支持iOS、Android、Flash、Windows、Mac、Wii等平台的游戏开发,cocos2d-x支持iOS、Android、WP等。
三十六:C#和C++的区别?
简单的说:C# 与C++ 比较的话,最重要的特性就是C# 是一种完全面向对象的语言,而C++ 不是,另外C# 是基于IL 中间语言和.NET Framework CLR 的,在可移植性,可维护性和强壮性都比C++ 有很大的改进。C# 的设计目标是用来开发快速稳定可扩展的应用程
序,当然也可以通过Interop 和Pinvoke 完成一些底层操作。更详细的区别大家可以参考这里
三十七:结构体和类有何区别?
结构体是一种值类型,而类是引用类型。(值类型、引用类型是根据数据存储的角度来分的)就是值类型用于存储数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作
三十八:ref参数和out参数是什么?有什么区别?
ref和out参数的效果一样,都是通过关键字找到定义在主函数里面的变量的内存地址,并通过方法体内的语法改变它的大小。不同点就是输出参数必须对参数进行初始化。ref必须初始化,out 参数必须在函数里赋值。ref参数是引用,out参数为输出参数。
三十九:C#的委托是什么?有何用处?
委托类似于一种安全的指针引用,在使用它时是当做类来看待而不是一个方法,相当于对一组方法的列表的引用。用处:使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。
四十:C#中的排序方式有哪些?
选择排序,冒泡排序,快速排序,插入排序,希尔排序,归并排序
四十一:射线检测碰撞物的原理是?
射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 。
四十二:Unity中,照相机的Clipping Planes的作用是什么?调整Near、Fare两个值时,应该注意什么?
剪裁平面 。从相机到开始渲染和停止渲染之间的距离。
四十三:如何让已经存在的GameObject在LoadLevel后不被卸载掉?
void Awake() {
DontDestroyOnLoad(transform.gameObject); }
四十四:请简述GC(垃圾回收)产生的原因,并描述如何避免?
GC回收堆上的内存
避免:1.减少new产生对象的次数 2.使用公用的对象(静态成员) 3.将String换为StringBuilder
四十五:反射的实现原理?
审查元数据并收集关于它的类型信息的能力。实现原理:在运行时根据程序集及其中的类型得到元数据。下面是实现步骤: 1. 导入using System.Reflection;
2. Assembly.Load(―程序集‖)加载程序集,返回类型是一个Assembly 3. 得到程序集中所有类的名称
foreach (Type type in assembly.GetTypes()) {
string t = type.Name; }
4. Type type = assembly.GetType(―程序集.类名‖);获取当前类的类型 5. Activator.CreateInstance(type); 创建此类型实例
6. MethodInfo mInfo = type.GetMethod(―方法名‖);获取当前方法 7. m.Info.Invoke(null,方法参数);
四十六:简述四元数的作用,四元数对欧拉角的优点?
四元数用于表示旋转 相对欧拉角的优点: 1.能进行增量旋转 2.避免万向锁
3.给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)
四十七:移动相机动作在哪个函数里,为什么在这个函数里?
LateUpdate,是在所有的update结束后才调用,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是所有的update操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
四十八:GPU的工作原理
简而言之,GPU的图形(处理)流水线完成如下的工作:(并不一定是按照如下顺序) 顶点处理:这阶段GPU读取描述3D图形外观的顶点数据并根据顶点数据确定3D图形的形状及位置关系,建立起3D图形的骨架。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Vertex Shader(定点着色器)完成。 光栅化计算:显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。 纹理帖图:顶点单元生成的多边形只构成了3D物体的轮廓,而纹理映射(texture mapping)工作完成对多变形表面的帖图,通俗的说,就是将多边形的表面贴上相应的图片,从而生成―真实‖的图形。TMU(Texture mapping unit)即是用来完成此项工作。 像素处理:这阶段(在对每个像素进行光栅化处理期间)GPU完成对像素的计算和处理,从而确定每个像素的最终属性。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Pixel Shader(像素着色器)完成。 最终输出:由ROP(光栅化引擎)最终完成像素的输出,1帧渲染完毕后,被送到显存帧缓冲区。
总结:GPU的工作通俗的来说就是完成3D图形的生成,将图形映射到相应的像素点上,对每个像素进行计算确定最终颜色并完成输出。
四十九:什么是渲染管道?
是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有:
本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化
五十:如何优化内存?
有很多种方式,例如 1.压缩自带类库;
2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉; 3.释放AssetBundle占用的资源;
4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;
5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。 6.代码中少产生临时变量
五十一:动态加载资源的方式?他们之间的区别
1.Resources.Load(); 2.AssetBundle 区别参考
五十二:请描述游戏动画有哪几种,以及其原理?
主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。
关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画;
骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观; 单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
五十三:alpha blend工作原理
Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库unity面试题(2)在线全文阅读。
相关推荐: