unity3d真题精选.docx
《unity3d真题精选.docx》由会员分享,可在线阅读,更多相关《unity3d真题精选.docx(15页珍藏版)》请在冰豆网上搜索。
unity3d真题精选
unity3d真题精选
[填空题]
1C#中有哪些常用的容器类,各有什么特点。
参考答案:
L.ist,HashTable,Dictionary,Stack,Queue
L.ist:
索引泛型容器访问速度快修改速度慢
H.ashTable/Dictionary:
散列表格式查询效率高空间占用较大
S.tack:
后进先出
Q.ueue:
先进先出
[填空题]
2使用原生GUI创建一个可以拖动的窗口命令是什么?
参考答案:
GUI.DragWindow();
[填空题]
3编辑器类存放路径是什么?
参考答案:
工程目录下的Assets/Editor文件夹下。
[填空题]
4中国有句俗话“三天打鱼两天晒网”,某人从2000年1月1日起开始“三天打鱼两天晒网”,问这个人在今后的某天中“打鱼”还是”晒网”。
参考答案:
[填空题]
5调试记录到控制台的命令是什么?
参考答案:
Debug.Log();
[填空题]
6当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?
如何避免?
参考答案:
穿透(碰撞检测失败)(碰撞体变大,FixedUpdate,代码限制)
[单项选择题]
7、Application.loadLevel命令为:
()
A.加载关卡
B.异步加载关卡
C.加载动作
参考答案:
A
[填空题]
8UI用的是NGUI还是UGUI?
参考答案:
两个都用过。
之前用的NGUI后来用了UGUI。
[单项选择题]
9、Animation.CrossFade命令作用是:
()
A.动画放大
B.动画转换
C.动画的淡入为其他动画
参考答案:
C
[单项选择题]
10、以下哪项技术不是目前Unity所支持的OcclusionCulling技术?
()
A.PVSonly
B.PVSanddynamicobjects
C.AutomaticPortalGeneration
D.DynamicOnly
参考答案:
D
[填空题]
11获取、增加、删除组件的命令分别是什么?
参考答案:
获取:
GetComponent
增加:
AddComponent
删除:
Destroy
[填空题]
12物体发生碰撞时,有几个阶段,分别对应的函数。
参考答案:
三个阶段,OnCollisionEnter/Stay/Exit函数
[填空题]
13简述实现吊机吊物体的功能。
参考答案:
吊机吊物体需要节点挂接和坐标系转换。
[填空题]
14用代码实现第三角色控制器。
参考答案:
[填空题]
15localPosition与Position的使用区别?
参考答案:
LocalPosition:
自身位置,相对于父级的变换的位置。
Position:
在世界坐标transform的位置。
[填空题]
16反向旋转动画的方法是什么?
参考答案:
反转动画,讲动画的速度调到-1,碰撞时,被碰撞物体与碰撞物体有collider组件,碰撞物体有刚体组件,或角色碰撞得包含角色组件OR改变animation.speed。
[单项选择题]
17、关于MonoBehavior.LateUpdate函数描述错误的是:
()
A.当MonoBehavior类型应用后,每帧调用一次
B.常被用于处理RigidBody的更新
C.在所有Update函数执行后才能被调用
D.常被用于实现跟随相机效果,且目标物体的位置已经在Update函数中被更新
参考答案:
B
[填空题]
18什么是协同程序?
参考答案:
在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。
换句话说,开启协程就是开启一个线程。
可以用来控制运动、序列以及对象的行为。
[填空题]
19请简述一下对象池原理,什么情况下使用?
参考答案:
对象池背后的理念其实是非常简单的。
我们将对象存储在一个池子中,当需要时在再次使用,而不是每次都实例化一个新的对象。
池的最重要的特性,也就是对象池设计模式的本质是允许我们获取一个“新的”对象而不管它真的是一个新的对象还是循环使用的对象。
对象池通常用于在那些需要经常创建又销毁的对象比如我们场景中的小怪,经常需要创建和销毁,我们就可以在小怪销毁的时候,不真正的销毁而是,而是把它放入对象池中等到下一次我们需要创建小怪的时候,再从对象池中取出来。
[填空题]
20为什么u3d会出现组件上数据丢失的情况?
参考答案:
一般是组件上绑定的物体对象被删除了。
[填空题]
21对unity的理解。
参考答案:
可以做VR、手游、工艺仿真、端游、页游跨平台的游戏引擎。
更多内容请访问《睦霖题库》微信公众号
[填空题]
22移动相机动作在哪个函数里,为什么在这个函数里。
参考答案:
LateUpdate,,是在所有update结束后才调,比较适合用于命令脚本的执行。
官网上例子是摄像机的跟随,都是在所有update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
[填空题]
23对数据结构了解吗?
说说你常用的数据结构。
参考答案:
了解,数据结构是每个程序员都要会一点的。
链表、列表、散列表最常用,队列和栈也经常使用。
二叉树偶尔使用。
[填空题]
24物理更新一般在哪个系统函数里?
参考答案:
FixedUpdate,每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。
FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。
Update就比较适合做控制。
[填空题]
25热更新的解决方案(资源以及代码)。
参考答案:
ulua框架、simpleFramework框架、bundlemanager插件
[填空题]
26unity3d从唤醒到销毁有一段生命周期,请列出系统自己调用的几个重要方法。
参考答案:
Awake–>OnEnable–>Start–>Update–>FixedUpdate–>LateUpdate–>OnGUI–>Reset–>OnDisable–>OnDestroy
[填空题]
27如何实现背包系统、宠物系统、装备系统的实时更新?
参考答案:
NGUI做界面,使用ulua做热更新。
之前公司使用的是SimpleFramework这样的框架。
[填空题]
28u3d提供了一个用于保存读取数据的类,(playerPrefs),请列出保存读取整形数据的函数。
参考答案:
PlayerPrefs.SetInt与PlayerPrefs.GetInt
[填空题]
29请简述在客户端开发方面你最擅长的模块系统,以及你觉得哪些模块会出现的问题。
参考答案:
擅长UI模块的制作,我认为热更新模块会出现问题,比如资源依赖不合理,导致资源包过大。
[填空题]
30物体绕某点旋转使用函数叫什么?
参考答案:
transform.RotateAround
[填空题]
31用过什么传输协议,用什么语言?
参考答案:
http,tcp(socket)都是C#语言编写。
[填空题]
32模型导入Unity后怎么与数据库产生联系?
类似打通程序和数据库通道。
参考答案:
例如mysql数据库,需要导入两个文件,就可以通过sql语句往数据库写数据,数据可以是模型信息。
[填空题]
33物体自旋转使用的函数叫什么?
参考答案:
transform.Rotate
[填空题]
34用过什么游戏框架?
参考答案:
SimpleFramework,基于ulua的框架,支持ugui和ngui的热更新。
[填空题]
35u3d中,几种施加力的方式,描述出来。
参考答案:
rigidbody.AddForce/AddForceAtPosition,都是rigidbody的成员函数。
[填空题]
36怎样实现植物的弯曲?
参考答案:
1、max做骨骼动画
2、修改Tree组件的GrowthAngle的值
[填空题]
37Unity3D如何获知场景中需要加载的数据?
参考答案:
Resource.Load
AssetBundle.Load
[填空题]
38项目问题,和美工想法冲突了怎么办?
参考答案:
找项目主管协调处理。
[填空题]
39请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?
参考答案:
当物体是否可见切换之时。
可以用于只需要在物体可见时才进行的计算。
[填空题]
40原公司服务器怎么实现多人在线?
参考答案:
使用socket基于TCP协议开发的多人在线。
公司有自行开发的服务端程序。
[填空题]
41OnEnable、Awake、Start运行时的发生顺序?
哪些可能在同一个对象周期中反复的发生?
参考答案:
Awake-》OnEnable-》Start
OnEnable在同一周期中可以反复地发生。
[填空题]
42公司内部信息传递用的什么安全协议?
参考答案:
1、公司自定义的安全协议或者基于SSL/TLS协议或者SSH协议
2、我们至少调用基于相关协议的SDK
3、SSL/TLS协议
SSL/TLS协议(RFC2246RFC4346)处于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
从协议内部的功能层面上来看,SSL/TLS协议可分为两层:
1.SSL/TLS记录协议(SSL/TLSRecordProtocol),它建立在可靠的传输层协议(如TCP)之上,为上层协议提供数据封装、压缩、加密等基本功能。
2.SSL/TLS握手协议(SSL/TLSHandshakeProtocol),它建立在SSL/TLS记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等初始化协商功能。
S.SH是英文SecureShell的简写形式。
通过使用SSH,你可以把所有传输的数据进行加密,这样”中间人”这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。
使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。
SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的”通道”。
[填空题]
43Unity3D是否支持写成多线程程序?
如果支持的话需要注意什么?
参考答案:
仅能从主线程中访问Unity3D的组件,对象和Unity3D系统调用。
[填空题]
44了解代码管理么?
在开发中使用什么代码管理工具?
使用的接口多一点还是继承多一点?
参考答案:
了解。
使用SVN进行代码管理。
接口多一点。
[填空题]
45简述Unity3D支持的作为脚本的语言的名称。
参考答案:
U.nity的脚本语言基于Mono的.Net平台上运行,可以使用.NET库,这也为XML、数据库、正则表达式等问题提供了很好的解决方案。
U.nity里的脚本都会经过编译,他们的运行速度也很快。
这三种语言实际上的功能和运行速度是一样的,区别主要体现在语言特性上。
J.avaScript:
和网页中常用的JavaScript不一样,它编译后的运行速度很快,语法方面也会有不少区别。
B.oo:
可以看做是Python语言的变种,又糅合了Ruby和C#的特性,它是静态类型语言。
[填空题]
46会做数据库吗?
有嵌套的数据库能做么?
参考答案:
会。
用过关系型数据库mysql。
能做,只是这方面之前在公司没怎么负责这块,有些生疏,稍微熟悉一下就能做。
[填空题]
47Unity3D中的协程(coroutine)和C#线程之间的区别是什么?
参考答案:
(1)多线程程序同时运行多个线程,而在任一指定时刻只有一个协程在运行,并且这个正在运行的协同程序只在必要时才被挂起。
(2)除主线程之外的线程无法访问Unity3D的对象、组件、方法。
(3)Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。
(4)StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。
而LoadLevelAsync则允许你在后台加载新资源和场景,所以再利用协同,你就可以前台用loading条或动画提示玩家游戏未卡死,同时后台协同处理加载的事宜。
[填空题]
48谈谈你们公司的网络编程。
参考答案:
在我们公司基本是由服务端人员开发的,我这边只调用他们提供的客户端SDK和服务器端通信。
服务器端是公司用C++自行研发的。
[填空题]
49NGUI的自适应性是?
如果此时屏幕比例变化,屏幕出现黑边怎么办?
(注:
改变NGUI和UGUI的FixedsizewithScreen不可行)
参考答案:
NGUI根目录的UIRoot组件自带了根据高度自适应分辨率的功能。
ScalingStyle属性可选择三种不同的缩放策略。
PixelPerfect完美像素:
直接显示设定好的像素。
当屏幕高度低于minimumHeight时按比例缩小,当屏幕高度大于maximumHeight时按比例扩大。
FixedSize按比例缩放:
在设定好的基础上,直接按比例缩放。
FixedSizeOnMobiles合体版,android和ios为FixedSize方式,其它按照PixelPerfect方式。
[填空题]
50你对跨平台的了解。
参考答案:
跨平台就是在一个熟悉的平台上面开发的软件或者程序,直接可以在其他平台上正常的运行显示而不需要对其原始文件或者原始代码进行修改。
[填空题]
51简述Prefab的使用?
Editor下动态创建Prefab的方式"u3d里动态创建对象,需要使用prefab而创建的时候MonoBehaviour.Instantiate(GameObjectorignal)需要一个作为原型的对象。
三种方式获得prefab对象。
参考答案:
方式一:
使用脚本的public字段
直接在Project视图里找到做好的prefab,将其拖拽到指定脚本的指定publicGameObject字段。
方式二:
Resource类
1、在Assets目录下的任意位置创建一个名为resources的文件夹,将做好的prefab放到这个文件夹下,path形式如下:
Assets/..../resources/prefabName.prefab。
2、在代码里使用Resource.Load或LoadAll函数,获得原型对象。
指定prefab时不需要指定扩展名。
(.prefab),形式如下:
GameObjectprototype=Resource.Load(“prefabName”)asGameObject;可以有任意数量的resources文件夹,怀疑是Resource类初始化的时候会搜集所有resources文件夹里的文件名。
方式三:
加载到场景
一般我们制作Perfab的时候,都是在Hierarchy视图里创建GameObject,然后再搭建Prefab。
事后根据需要删除这个原始的GameObject。
因此我们可以保留这个GameObject,然后在场景加载后Find这个对象(代码方式),或者使用脚本public字段(编辑器方式)。
[填空题]
52怎样反外挂?
对外挂的看法。
参考答案:
游戏外挂的原理:
外挂分为多种,比如模拟键盘的,鼠标的;修改数据包的;修改本地内存的。
1、对于模拟用户的鼠标键盘输入的外挂,我们可以用网页上常用的验证码的方式来对付。
模拟键盘鼠标的外挂对游戏的影响比加速、修改封包、修改内存、脱机等要小得多,因此被一些人称为绿色外挂。
2、让服务器不把在正常情况下玩家看不到的东西的数据传送给客户端。
3、把玩家操作记录发到服务器进行模拟,如果和客户端的计算结果偏差较大可以认为作弊。
[单项选择题]
53、下列哪个视图主要用于显示和编辑所选游戏对象或资源的相关属性()
A.Scene
B.Project
C.Inspector
D.Hierarchy
参考答案:
C
[填空题]
54如何处理网络异常下的可玩性?
参考答案:
1、为游戏增加单机模式:
比如故事模块,网络异常时可以阅读游戏的故事;丰富的技能或卡牌,网络异常时可以了解技能和卡牌;提供单机玩法,玩家可以与AI进行游戏等。
2、为游戏提供教程模块,网络异常时可以学习游戏技巧。
[单项选择题]
55、下列选项中有关Animator的说法错误的是()
A.Animasstor是Unity引擎内置组件
B.任何一个具有动画状态机功能的GameObject都需要一个Animator组件
C.它主要用于角色行为的设置,包括StateMachines,混合Blendtrees以及通过脚本控制的事件
D.Animator同Animation组件的用法是相同的
参考答案:
D
[填空题]
56如何与服务器交互?
参考答案:
做游戏,基本上都避免不了与服务器端交互,与服务器端交互的方式也有几种,总结起来就是长连接模式(Socket)与短链接模式(Http)。
[判断题]
57、在Unity引擎中,Depth属性值最大的摄像机会比Depth属性值小的摄像机更晚绘制么?
参考答案:
对
[填空题]
58背包系统中只有20个格子,现在有总共有100个物体,除了显示在视野中的20个外,对其他的处理方法?
(注:
将其他隐藏起来不可行,对象池得有具体的说明)
参考答案:
1.每个滚动条目都是同一个预设体的实例
2.做缓存,只要实例化视野范围内滚动条目,往上超出视野部分,自动填补到视野的下面
[单项选择题]
59、在Unity编辑器中,停止对Game视图进行预览播放的快捷键操作是以下哪一项()
A.CTRL/CMD+P
B.CTRL/CMD+Shift+P
C.CTRL/CMD+Alt+P
D.CTRL/CMD+S
参考答案:
A
[填空题]
60Unity资源加载的有几种方式,简述assetbundie。
参考答案:
1.直接在脚本中public一个对象,然后在监视器面板进行赋值。
2.直接在程序中进行find查找。
3.Resource.load。
4.把资源打成Assetbudle,然后用的时候load进来。
A.ssetbundle就是对资源的打包处理,同时这种资源格式便于从互联网上下载。