U3D面试题
直接上新....
什么是协同程序?
答:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个可以与程序并行的逻辑。可以用来控制运动、序列以及对象的行为。Unity3D中的碰撞器和触发器的区别?
答:碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。
当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器
物体发生碰撞的必要条件?
答:两个物体都必须带有碰撞器Collider,其中一个物体还必须带有Rigidbody刚体。请简述GC(垃圾回收)产生的原因,并描述如何避免?
答:GC回收堆上的内存
避免:
1)减少new产生对象的次数
2)使用公用的对象(静态成员)
3)将String换为StringBuilder- C#中变量可以分为值类型和引用类型:值类型有简单类型,结构类型,枚举类型;引用类型:类,代表,数组,接口;
unity 中定义的10个重要的事件函数,按照执行的先后顺序,依次为:
Reset //Awake //OnEnable //Start //FixedUpdate //Update //LateUpdate //OnGUI //OnDestroy反射的实现原理?
答:审查元数据并收集关于它的类型信息的能力。
实现步骤:
导入using System.Reflection;
Assembly.Load("程序集");//加载程序集,返回类型是一个Assembly
得到程序集中所有类的名称
foreach (Type type in assembly.GetTypes())
{
string t = type.Name;
}
Type type = assembly.GetType("程序集.类名");//获取当前类的类型
Activator.CreateInstance(type);
//创建此类型实例
MethodInfo mInfo = type.GetMethod("方法名");//获取当前方法
mInfo.Invoke(null,方法参数);简述四元数Quaternion的作用,四元数对欧拉角的优点?
答:四元数用于表示旋转
相对欧拉角的优点:
能进行增量旋转
避免万向锁
给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)如何安全的在不同工程间安全地迁移asset数据?三种方法
答:
1.将Assets和Library一起迁移
2.导出包package
3.用unity自带的assets Server功能OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?
答:Awake–>OnEnable->Start
OnEnable在同一周期中可以反复地发生MeshRender中material和sharedmaterial的区别?
答:修改sharedMaterial将改变所有物体使用这个材质的外观,并且也改变储存在工程里的材质设置。
不推荐修改由sharedMaterial返回的材质。如果你想修改渲染器的材质,使用material替代。TCP/IP协议栈各个层次及分别的功能
答:网络接口层:这是协议栈的最低层,对应OSI的物理层和数据链路层,主要完成数据帧的实际发送和接收。
网络层:处理分组在网络中的活动,例如路由选择和转发等,这一层主要包括IP协议、ARP、ICMP协议等。
传输层:主要功能是提供应用程序之间的通信,这一层主要是TCP/UDP协议。
应用层:用来处理特定的应用,针对不同的应用提供了不同的协议,例如进行文件传输时用到的FTP协议,发送email用到的SMTP等。委托是什么?委托跟事件的区别?
委托是把方法当做参数应用的一种形式,委托能很方便的通过“+=”“-=”的方法添加删除方法并调用方法,减少了一定量的代码而不失功能,更方便在可以轻松调用其他类中的方法
谈谈你对C,C++,Java,C#的看法?他们之间有什么区别?你最熟悉哪一种语言,谈谈你对这门语言的理解?
都是一种计算机语言,c++是c的优化版,C#又是在两者的基础上的进一步升级,
他们之间的区别在于都是一门独立的计算机语言,有各自的语法特点
熟悉C#,C#是一门面向对象的计算及语言,应用方向广泛
面向对象有什么特点?
面向对象有三大特点:封装 继承 多态;
封装:是对代码的一种保护,也是对代码功能的分类,体现在一但封装代码之后可以防止对代码的随意访问和修改让代码更具稳定性,封装之后可以对实现功能的代码进行分类及调用
继承:把父类的非私有成员通过继承使子类同样拥有,但子类不需要把父类的非私有成员全部重新在子类中书写出来即可调用。大大减少了代码的重复出现。
多态:是指不同的形态,如通过父类实例化子类的对象
怎样处理异常?Finally有什么用?紧接着如果使用了return Finally还会执行么?
用try·····catch····,Finally的作用是无论是否出现异常都照常执行其中的代码, 不会
- 怎么样对类进行排序?
一个对象集合,我想根据类中的某一个属性对对象进行排序,应该怎么做?
不能用循环去比较,,想想别的
说说你常用的排序算法,然后就是会选其中一种让你说明该排序的基本思路,和大概的实现过程
冒泡排序:先确定从大到小还是从小到大,然后用第一个下标的数跟后面所有元素比较,出现大于或小于它的就互换值再跟下一个下标的元素比较,然后再从第二个下标循环下去直到倒数第二个下标比较完截止 ;
插入排序:先确定从大到小还是从小到大,然后建一个长度相同的空数组,把最初的数组的元素一个一个放入最后面一个大于或小于新数组的某个元素后面,这个元素后面的元素向后移一个下标;
快速排序 :先确定从大到小还是从小到大,然后用第一个下标的元素跟后面元素比较,出现大于或小于它的就记录下标,用记录下标下的预算继续与后面的元素比较知道最后一个元素为止,再把第一个下标的元素与记录的下标的元素互换,再从第二下标开始比较记录
知道什么是反射么?请介绍一下反射
- 什么是Lambda表达式? 有什么作用?
知道正则表达式么? 回答了解一点 然后就是 怎么拿到0-9之间的所有数?请表述出来
静态类和静态方法的区别?静态类和普通类的区别?普通类为什么实例化对象之后才能去调用类里面的方法和属性?
静态类包含静态方法,但静态方法不止存在静态类中
静态类只能包含静态成员和常量,普通类不止包含静态成员和常量还包含其他非静态成员和变量
普通类都属于引用类型
值类型和引用类型有什么区别?
值类型存储的位置在栈空间,引用类型的存储的位置在堆空间,
值类型的改变是把原空间中的内容进行改变,引用类型的改变是开辟新的空间赋予新的内容再把新的空间位置指向引用类型
Socket通信用到了什么协议?TCP和UDP协议的区别?你还知道哪些层的哪些协议?
用到了TCP和IP,UDP协议,TCP协议的传输速度相对较慢但是传输的内容不会丢失,而UDP协议则是传输速度非常快但在传输的过程中容易出现数据丢失的情况
NGUI和UGUI的区别?可能真正的区别真的不是百度上的那些。。我对一个从unity1.0
做到现在的人说NGUI和UGUI的区别。。。
【ngui与ugui的区别】
1) uGUI的Canvas 有世界坐标和屏幕坐标
2) uGUI的Image可以使用material
3) UGUI通过Mask来裁剪,而NGUI通过Panel的Clip
4) NGUI的渲染前后顺序是通过Widget的Depth,而UGUI渲染顺序根据Hierarchy的顺序,越下面渲染在顶层.
5) UGUI 不需要绑定Colliders,UI可以自动拦截事件
6) UGUI的Anchor是相对父对象,没有提供高级选项,个人感觉uGUI的Anchor操作起来比NGUI更方便
7) UGUI没有Atlas一说,使用Sprite Packer
8) UGUI的Navigation在Scene中能可视化
9) UGUI的事件需要实现事件系统的接口,但写起来也算简单
【ngui与ugui的优缺点】
1) NGUI还保留着图集,需要进行图集的维护。而UGUI没有图集的概念,可以充分利用资源,避免重复资源。
2) UGUI出现了锚点的概念,更方便屏幕自适应。
3) NGUI支持图文混排,UGUI暂未发现支持此功能。
4) UGUI没有 UIWrap 来循环 scrollview 内容。
5) UGUI暂时没有Tween组件。
你熟悉哪些插件?举个例子说明一下
NGUI、A星寻路、对象池 、easytouch等
什么时候销毁不用的对象?你怎么知道那个对象现在没有使用可以销毁?析构函数?
确定对象不再使用以后可以销毁,根据经验和具体项目把确定可以销毁的销毁,后期在优化的时候再补充

U3D面试题的更多相关文章
- 某公司的U3D笔试题
某公司的U3D笔试题 今天这套笔试题感觉做得一般. 随后是二对一的技术面试,但涉及的技术细节相对较少,更多的是对以前工作.项目经历的询问. 然后说今天先到这里,让我等通知. 我还特意问了一下,通知 ...
- U3D面试题六
U3D面试题大全 1.Unity中碰撞器(Collider)和触发器(Trigger)的区别? 两方都必须要有碰撞体,且一方要有刚体,但在发生碰撞的条件下,Collide碰撞器会生产 碰撞反弹的物 ...
- 总结的U3D面试题
1.配置Unity 3d调试环境? 1) Visual Studio Tools for Unity 2) 访问http://unityvs.com 3) ...
- U3D面试题四
1.配置Unity3D调试环境 在windows环境下,设置unity3d的编辑器调试环境方法: 点击“Edit‘---”Preferences“,弹出如下窗口 选择MonoDeveop即可. 在编辑 ...
- U3D面试题系列二
高频问题: 一.什么是渲染管道? 是指在显示器上为了显示出图像而经过的一系列必要操作. 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去. 主要步骤有: 本地坐标->视图 ...
- U3D面试五
U3D面试题 配置Unity3D调试环境 Visual Studio Tools for Unity 访问http://unityvs.com 安装对应的版本 使用方法(生成项目文件,如何调试) Ar ...
- AS3语法和UNITY C#语法的异同
AS3 UNITY Sprite a = new Sprite(); trace(a.paent); 此时a.parent为null,还未AddChild到屏幕上, 一般用这个来判断在不在屏幕上 ...
- 分享我的2014年3月unity3d面试题与参考答案
今年3月份面试unity3d游戏程序,先做的面试题,然后人事问了我几个之前游戏开发的问题,问我英语怎么样等等,介绍了公司情况和对unity3d程序的要求.之后就回来了,总共面了不到1个半小时吧.笔试答 ...
- 史上最全的Unity面试题(持续更新总结。。。。。。) 包含答案的Unity面试题
这个是我刚刚整理出的Unity面试题,为了帮助大家面试,同时帮助大家更好地复习Unity知识点,如果大家发现有什么错误,(包括错别字和知识点),或者发现哪里描述的不清晰,请在下面留言,我会重新更新,希 ...
随机推荐
- oracle 命令行
背景 看到当初竟然记录了命令行,想想自己用了多久才知道了命令行,好像有几年了吧.当时还记得买了两本oracle9的管理书籍,就跟见了九阴真经一样,从头到尾熟悉了好几遍,不过也大部分忘了交给老师了.以下 ...
- scn 时间
Scn转换成时间: select to_char(scn_to_timestamp(3998591352171),'YYYY-MM-DD HH24:MI:SS') from dual: 时间转换成sc ...
- spring+activemq配置文件内容及实现原理
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Oracle常用sql语句(一)
# Sql的分类 # DDL (Data Definition Language):数据定义语言,用来定义数据库对象:库.表.列等: CREATE. ALTER.DROP DML(Data Manip ...
- main.js 里的/* eslint-disable no-new */
注意项目中的这个,它的作用是: 在js里面,new 一个对象,需要赋值给某个值(变量),用Vue实例化的时候,不需要赋值给值(变量),所以要单独给配一条规则,给new Vue这行代码上面加这个注释,把 ...
- Oracle:SQL语句--对表的操作——修改表名
– 修改表名(未验证在有数据,并且互有主外键时,是否可用) 语法: rename 现表名 to 新表名; 例: rename T_Student2 to T_Stu;
- InnoDB的关键特性-插入缓存,两次写,自适应hash索引
InnoDB存储引擎的关键特性包括插入缓冲.两次写(double write).自适应哈希索引(adaptive hash index).这些特性为InnoDB存储引擎带来了更好的性能和更高的可靠性. ...
- bzoj营业额统计
这个也是板子题吧,很水,求前驱后继即可 /* 插入,求前驱和后继 */ #include<iostream> #include<cstring> #include<cst ...
- pytest十二:cmd命令行参数
命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在 cmd 执行”pytest —html=report.html”,这里面的”—html=report.html“就是从命令行传入的参数对 ...
- html中hr的各种样式使用
第一种: <hr style=" height:2px;border:none;border-top:2px dotted #185598;" /> height:2p ...