【春秋招必看】Unity相关笔试面试题(内有完整答案)第六期

欢迎来到光光的奇妙冒险,我是你们的煎饼光子老师。

今天是我们的第六期笔试面试题总结。


C#部分:

1、C#中如何让自定义容器类能够使用for循环遍历?(通过 类对象[索引] 的形式遍历)

答案:
通过在类中实现索引器实现

2、C#中如何让自定义容器类能够使用foreach循环遍历?

答案:
通过为该类实现迭代器可以让其使用foreach遍历
传统方式:
继承IEnumerator、IEnumerable两个接口
实现其中的 
1.GetEnumerator方法
2.Current属性
3.MoveNext方法
语法糖方式:
利用yield return语法糖,实现GetEnumerator方法即可完成迭代器的实现

3、C#中接口的作用是什么?说说你的理解

答案:
用于建立行为的继承关系,而不是对象
不同对象,有相同行为时,我们可以利用接口对不同对象的行为进行整合

4、Unity引擎中哪些功能使用了C#的反射功能?至少说出一点

答案:
1.Inspector窗口中显示的内容
2.预设体文件
3.场景文件
4.Unity中的各种特性
等等

5、请问以上这三行代码,运行后,在堆上会分配几个“房间”

答案:
2个房间
"123"一个房间
"1234"一个房间 


Unity部分:

1、Unity中Awake和Start两个生命周期函数,分别在什么时候被调用?

答案:
Awake:运行时
当脚本被动态添加到对象上时立即被调用。
当对象被实例化时,依附它的脚本会立即调用Awake
它类似构造函数
Start:第一次Update之前被调用

2、Unity场景上有多个对象,都分别挂载了n个脚本。
我们如何控制不同脚本间生命周期函数Awake的执行先后顺序?

答案:
1.可以通过选中脚本文件,点击Inspector窗口右上角的Execution Order(执行顺序)按钮 
2.可以打开Project Setting窗口,选择Script Execution Order选项

通过这两种方式我们可以打开脚本执行顺序窗口
在其中我们可以自己设置自定义脚本的执行顺序

3、想要在Unity中使用指针我们需要进行哪些操作?

答案:
1.需要在PlayerSetting中的OtherSettings中勾选  Allow 'unsafe' code 选项
2.使用指针时必须在unsafe修饰的代码块中

4、Unity中的协同程序中yield return不同的内容,代表的含义不同
请说明下面这些yield return的含义
1.yield return 数字;
2.yield return null;
3.yield return new WaitForSeconds(数字);
4.yield return new WaitForFixedUpdate();
5.yield return new WaitForEndOfFrame();
6.yield break; 

答案:
1.yield return 数字; 下一帧执行
2.yield return null;  下一帧执行
3.yield return new WaitForSeconds(数字); 等待指定秒后执行
4.yield return new WaitForFixedUpdate(); 等待下一个固定物理帧更新时执行
5.yield return new WaitForEndOfFrame(); 等待摄像机和GUI渲染完成后执行
6.yield break; 跳出协程

5、使用Unity协同程序进行异步加载时,底层是否会使用多线程?

答案:
可能会
协同程序的原理是分时分步完成指定逻辑
在其中的某一步骤中,是可以使用多线程来完成某些加载操作的,多线程加载完成后,再进入协同程序的下一步继续执行

猜你喜欢

转载自blog.csdn.net/Blueberry124/article/details/142610968