Unity3D高频笔试题

  1. C# Class和Struct的区别是什么
答:(1)定义类是使用关键字Class,而定义结构体时使用关键字Struct结构体中不可对声明字段初始化,但是类可以。
(2)如果没有为类定义构造函数,C#编译器会自动生成一个无参数的实例构造函数,即隐式构造函数,但是如果我们为类显式地定义了一个构造函数,C#编译器就不会再生成隐式构造函数了;而结构体中,不论你是否显式地定义了构造函数,隐式构造函数都是一直存在的
(3)结构体不能继承结构或者类,但可以实现接口,而类可以继承类但不能继承结构,它也可以实现接口, 类是引用类型,而结构体是是值类型, 结构体不能定义析构函数,而类可以有析构函数, 不能用Abstract(抽象)和Sealed(密封)关键字修饰结构体,但是类可以。
  1. 1,1,2,3,5,8……求第第n(n>0)个数,写出方法(提示:递归)?
答: public static int A (int index)
    {
         if (index < 3) {
              return 1;
          } else {
              return A (index - 1) + A (index - 2);
          }
    }
 
  1. 请简述NGUI中Panel和Anchor的作用
答: (1)Panel对象有UIPanel脚本,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化、承载,以减少绘制命令的调用。
(2)Anchor包含UIAnchor脚本。UIAnchor的功能是把对象锚定在屏幕的边缘(左上,左中,左下,上,中,下,右上,右中,右下),或缩放物体使其匹配屏幕的尺寸。
 
  1. 什么是DrawCall?DrawCall高了又什么影响?如何降低DrawCall??
答:(1)Unity中,每次引擎准备数据并通知GPU的过程称为一次Draw Call。
(2)DrawCall越高对显卡的消耗就越大,造成界面的卡顿。
(3)降低DrawCall的方法:Dynamic Batching(动态批处理时),Static Batching(静态批处理时),高级特性Shader降级为统一的低级特性的Shader。
 
  1. 在编辑场景时将GameObject设置为Static有何作用?
:(1)说明该object是静止不变的。unity内部有不少操作检测gameobject是否为static,对于static的物体有一些特殊的处理。
(2)occlusion culling(遮挡剔除)会剔除对被static物体挡住的网格对象,在rendering优化时也会根据是否为static来进行不同的优化,在lightmaping时,会根据是否是static来进行光照。
 
  1. 将Camera组件的ClearFlags选项选成Depth only是什么意思?有何用处?
答:  如果把摄像机的ClearFlags勾选为Deapth Only,那么摄像机就会只渲染看得见的对象,把背景会完全透明,这种情况一般用在两个摄像机以上的场景中 。
 
  1. UNITY3d在移动设备上的一些优化资源的方法?
答: (1)使用assetbundle,实现资源分离和共享,将内存控制到200m之内。
(2)顶点数对渲染无论是cpu还是gpu都是压力最大的贡献者,降低顶点数到80k以下,fps稳定到了30帧左右。
(3)删除无意义的animator,animator的初始化很耗时。
(4)不要每帧计算viewsize 和windowsize。
(5)除主角外都不要跟骨骼运动apply root motion.
 
  1. 物理更新一般放在哪个系统函数里?
答: (FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
 
  1. 移动相机动作在哪个函数里,为什么在这个函数里?
答: LateUpdate,是在所有的update结束后才调用,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是所有的update操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
 
  1. 什么叫动态合批?跟静态合批有什么区别?
答: (1)如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。动态批处理操作是自动完成的,并不需要你进行额外的操作。
(2)区别:动态批处理一切都是自动的,不需要做任何操作,而且物体是可以移动的,但是限制很多。静态批处理:自由度很高,限制很少,缺点可能会占用更多的内存,而且经过静态批处理后的所有物体都不可以再移动了。
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值