文章目录
- unity 面试篇⚠️ | 基础不牢,地动山摇,unity基础面试题奉上
 - 
   
- 
     
- 1.unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,列出系统自带的几个重要的方法。
 - 2.unity3d中的碰撞器和触发器的区别?
 - 3.物体发生碰撞的必要条件?
 - 4.简述unity3d支持的作为脚本的语言的名称?
 - 5\. .net与mono的关系?
 - 6.onenable、awake、start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?
 - 7.移动相机动作在哪个函数里,为什么在这个函数里?
 - 8.unity提供了几种光源,分别是什么?
 - 9.简述四元数quaternion的作用,四元数对欧拉角的优点?
 - 10.charactercontroller和rigidbody的区别?
 - 11.简述prefab的用处
 - 12.简述进程、线程、协程的概念
 - 13.简述协程的作用
 - 14.简述协程的底层原理
 - 15.线程与协程的区别
 - 16.简述invoke与invokerepeating
 - 17.简述invoke与协程的区别
 - 18.正在运行的脚本,隐藏物体与禁止脚本导致触发ondisable时,invoke与coroutine是否正常运行?
 - 19.在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数 三个阶段
 - 20.unity3d的物理引擎中,有几种施加力的方式,分别描述出来
 - 21\. 物体自身旋转使用的函数?物体绕某点旋转使用函数叫什么?
 - 22.unity3d提供了一个用于保存和读取数据的类\(playerprefs\),请列出保存和读取整形数据的函数
 - 23.image和rawimage的区别
 - 24.在场景中放置多个camera并同时处于活动状态会发生什么?
 - 25.如何销毁一个unityengine.object及其子类?
 - 26.请描述游戏动画有哪几种,以及其原理?
 - 27.请描述为什么unity3d中会发生在组件上出现数据丢失的情况
 - 28.请描述interface与抽象类之间的不同
 - 29.如何安全的在不同工程间安全地迁移asset数据?三种方法
 - 30.unity3d是否支持写成多线程程序?如果支持的话需要注意什么?
 - 31.如何让已经存在的gameobject在loadlevel后不被卸载掉?
 - 32.u3d中用于记录节点空间几何信息的组件名称,及其父类名称
 - 33.向量的点乘、叉乘以及归一化的意义?
 - 34\. 为什么dynamic font在unicode环境下优于static font
 - 35.请简述如何在不同分辨率下保持ui的一致性
 - 36.请简述onbecamevisible及onbecameinvisible的发生时机,以及这一对回调函数的意义
 - 37\. 什么叫动态合批?跟静态合批有什么区别?
 - 38.动态加载资源的方式\?
 - 39.unity和cocos2d的区别
 - 40.获取、增加、删除组件的命令分别是什么?
 - 41.unity中,照相机的clipping planes的作用是什么\?调整 near、far两个值时,应该注意什么\?
 - 42.gpu的工作原理?
 - 43.使用unity3d实现2d游戏,有几种方式?
 - 44.将camera组件的clearflags选项选成depth only是什么意思?有何用处?
 - 45.在编辑场景时将gameobject设置为static有何作用?
 - 46.将图片的texturetype选项分别选为texture和sprite有什么区别
 - 47.实时点光源的优缺点是什么?
 - 48\. 如何在unity3d中查看场景的面数,顶点数和draw call数?
 - 49\. addcomponent后哪个生命周期函数会被调用
 - 50.层剔除
 - 51.画布的三种模式.缩放模式
 - 52.fsm有限状态机
 - 53.行为树与有限状态机
 - 54.简述行为树的概念及优缺点
 - 55.text 和 tmptext的区别 优缺点
 - 56.红点系统的实现
 - 57.animation和animator的区别
 - 58.简述skinnedmesh的实现原理
 - 59.scriptableobejct
 - 60.unity常用资源路径有哪些
 - 61.什么是协同程序?
 - 62.什么叫做链条关节?
 - 63.物理更新一般放在哪个系统函数里?
 - 64.il是什么?
 - 65.什么是运行时(runtime)?
 - 66.mono和il2cpp有什么区别?为什么要使用il2cpp?
 - 67.什么是托管代码,什么是非托管代码?
 - 68.mono的垃圾回收机制
 - 69.浮点数精度问题导致不同设备计算结果不同,有哪些解决方法?
 - 70.什么时候用结构体,什么时候用类?
 - 71.destroy和destroyimmediate的区别?
 - 72.ui上的特效怎么被裁剪?
 - 73.ugui和ngui区别
 - 74.ngui渲染过程
 - 75.ugui渲染过程
 - 76.如何让粒子在界面上正确显示?
 - 77\. mesh与sharemesh,material与sharematerial,materials和sharedmaterials的区别?
 - 78.欧拉角,四元数,旋转矩阵优缺点
 - 79.在开发过程中哪些地方比较容易造成内存泄漏问题?如何避免?
 - 80.如果不想new,但又想获取对象实例,有哪几种方法?
 - 81.假设一个回合制战斗,战斗过程均由客户端计算,请问使用什么方式使得服务器可以验证此场战斗的数据是合法的\?
 - 82.游戏中常用的设计模式
 - 83.assetbundle 的生命周期
 - 84.如何判断客户端与服务器是否保持连接
 - 85.什么是黏包
 - 86.有限状态机和行为树区别
 - 87.什么是扩展方法?
 - 88.刚体中的is kinematic
 - 89\. 材质、贴图、纹理的关系
 - 90.垂直同步对游戏帧率有什么影响
 - 91.动画融合是怎么实现的
 - 92.修改time.timescale会影响什么?
 - 93.unity3d 如何获知场景中需要加载的数据?如何动态资源加载
 - 94.第一次执行gameobject.instantiate的时候有明显卡顿,该怎么解决?
 - 95.反向旋转动画的方法是什么?
 - 96.写出animation的五个方法
 - 97.动画层\(animationstate layers\)的作用是什么?
 - 98.material 和physic material 区别?
 - 99.layermask.nametolayer\(\)这个方法有什么作用?
 - 100.unity3d中static batching和dynamic batching 各有什么用?
 - 101.unity3d中awake和start 谁先执行,update和fixedupdate 有什么区
 - 102.unity3d中的协程(coroutine)和c#线程之间的区别是什么?
 - 103.localposition 与position 的使用区别?
 - 104.vector3.forward与vector3\(0,0,1\)是一样的意思对吗?
 - 105.去掉敏感字的程序(手写程序)
 - 106.unity3d中resources目录一般用来放些什么,打包的时候会有什么影响?
 - 107.怎么判断两个平面是否相交\?不能用碰撞体,说出计算方法
 - 108.meshcollider和其他collider的⼀个主要不同
 - 109.当⼀个细⼩的⾼速物体撞向另⼀个较⼤的物体时,会出现什么情况?如何
 - 110.在unity中如何是西安相机跟随角色?
 - 111.在unity中如何加载异步资源?
 - 112.在unity中如何实现角色动画?
 - 113.在unity中如何加载并播放音频?
 - 114.如何在unity中实现粒子效果\?
 - 115.在unity中如何实现游戏的平台差异化处理?
 - 116.在unity中如何实现游戏对象之间的通信?
 - 117.如何在unity中实现多人联网游戏?
 - 118.为何大家都在移动设备上寻求u3d原生gui的替代方案?
 - 119.举例unity的四个特殊文件夹,分别是干什么用的?
 - 120.unity调整旋转
 - 121.本地坐标系 世界坐标系
 
 
 - 
     
 

unity 面试篇⚠️ | 基础不牢,地动山摇,unity基础面试题奉上
1.unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,列出系统自带的几个重要的方法。
- awake —> onenable —> start —> fixedupdate —>update —> lateupdate—> ongul —> ondisable —> ondestroy
 - 主要执行顺序 
  
- 编辑器->初始化->物理系统->输入事件->游戏逻辑->场景渲染->gui渲染->物体激活或禁用->销毁物体->应用结束
 - 主要函数介绍
reset 是在用户点击检视面板的reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用。reset最常用于在检视面板中给定一个最常用的默认值。
awake 用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次,当脚本设置为不可用时,运行时awake方法仍然会执行一次。awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如 gameobject.findwithtag 这样的函数搜索它们。每个游戏物体上的awke以随机的顺序被调用。因此,你应该用awake来设置脚本间的引用,并用start来传递信息 ,awake总是在start之前被调用。它不能用来执行协同程序。
onenable当对象变为可用或激活状态时被调用事件监听。
start 在behaviour的生命周期 
 
            
                                            
                                            
                                            
发表评论