文章目录
- 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的生命周期
发表评论