MIL8——模拟面试题
MIL8——模拟面试题
问题
C#
-
如果我们想为 Unity 中的
Transform
类添加一个自定义的方法,应该如何处理? -
请说出
using
关键字的两个作用 -
C# 中
Dictionary
不支持相同键存储 如果想要一个键对应多个值如何处理? -
请问下面代码的最终打印结果是什么?为什么?
1
2
3
4
5
6
7
8
9
10
11
12static void Main(string[] args)
{
Action action = null;
for (int i = 10; i < 10; i++)
{
action += () =>
{
Console.WriteLine(i);
};
}
action();
} -
上题中的代码,如果我们希望打印出0~9,应该如何修改代码?
Unity
- Unity中如何将本地坐标转为世界坐标?
- Unity中如何计算出两个向量之间的夹角,请说出两种方式
- 请写出UGUI中两种处理异形按钮的具体方法
- 请说出Unity中如何进行数据持久化,至少说出5种方式
- 在Unity中如何控制渲染优先级?(谁先渲染谁后渲染,分情况回答)
答案
C#
-
如果我们想为 Unity 中的
Transform
类添加一个自定义的方法,应该如何处理?答案: 通过C#的拓展方法相关知识点进行添加
-
请说出
using
关键字的两个作用答案:
- 引入命名空间
- 安全使用引用对象
-
C# 中
Dictionary
不支持相同键存储 如果想要一个键对应多个值如何处理?可以设置字典的值类型为复杂数据类型或者数据集合,如:
1
2
3
4
5Dictionary<string, List<Player>> dic1 = new Dictionary<string, List<Player>>();
Dictionary<string, Player[]> dic2 = new Dictionary<string, Player[]>();
Dictionary<string, LinkedList<Player>> dic3 = new Dictionary<string, LinkedList<Player>>();
Dictionary<string, Stack<Player>> dic4 = new Dictionary<string, Stack<Player>>();
Dictionary<string, Queue<Player>> dic5 = new Dictionary<string, Queue<Player>>(); -
请问下面代码的最终打印结果是什么?为什么?
1
2
3
4
5
6
7
8
9
10
11
12static void Main(string[] args)
{
Action action = null;
for (int i = 10; i < 10; i++)
{
action += () =>
{
Console.WriteLine(i);
};
}
action();
}答案: 全是10,当委托最终执行时,他们使用的
i
,都是for
循环中声明的那一个i
,此时的i
已经变成了10 -
上题中的代码,如果我们希望打印出0~9,应该如何修改代码?
答案:
不是在
for
声明语句内声明要在委托中调用的变量,而是在每次循环开始时声明要在委托中调用的变量,这样这十个变量就是不同的内存空间1
2
3
4
5
6
7
8
9
10
11
12
13static void Main(string[] args)
{
Action action = null;
for (int i = 10; i < 10; i++)
{
int num = i;
action += () =>
{
Console.WriteLine(num);
};
}
action();
}
Unity
-
Unity中如何将本地坐标转为世界坐标?
答案:
- 用本地坐标加上父对象相对世界的坐标(如果有多层父子关系,不停地往上加即可)
- 利用
Transform
中的TransformPoint
方法
-
Unity中如何计算出两个向量之间的夹角,请说出两种方式
答案:
- 利用
Vector3
中的API:Vector3.Angle
- 先使用
Vector3.Dot
算出方向向量点乘结果,再通过Mathf.Acos
反三角函数算出弧度,再将弧度转为角度
- 利用
-
请写出UGUI中两种处理异形按钮的具体方法
答案:
- 方法一:异形按钮,自带的像素检测阈值
- 方法二:异形按钮,通过子对象拼凑
详见:UG3L16——异形按钮
-
请说出Unity中如何进行数据持久化,至少说出5种方式
- PlayerPrefs
- 2进制文件存储
- xml文件存储
- json文件存储
- 数据库存储(本地、远端、通过服务器存储到数据库)
-
在Unity中如何控制渲染优先级?(谁先渲染谁后渲染,分情况回答)
答案:
- 不同摄像机渲染时,摄像机深度(Camera depth)控制优先级
- 相同摄像机时,排序层级(Sorting Layer)控制优先级
- 相同排序层级时,层中的顺序(Order in Layer)控制优先级
- 相同摄像机,无排序层级属性时,Shader 中的 RenderQueue(渲染队列)控制优先级
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!