ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

整理的Unity 面试题(有些没答案都是师兄在脑海里记录下来的)(二)

2021-11-08 23:06:07  阅读:1076  来源: 互联网

标签:动画 面试题 角色 攻击 记录下来 item Unity new UDP


1、C#中的排序方式有哪些?

 选择排序、冒泡排序、快速排序、插入排序、希尔排序,归并排序。

2、C#和Lua的交互怎么实现?

3、Lua的数据类型

4、射线检测碰撞的原理是?

射线是3D世界中的一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射。

5、Lua有几种循环?Ipair和pair的区别。

6、Unitya中,照相机的Clipping Plane的作用是什么?调整Near\Fare两个值时,应该注意什么?

剪裁平面。从相机到开始渲染和停止渲染之间的距离。

7、Unity的ui怎么优化?

8、请简述GC(垃圾回收)产生的原因,并描述如何避免?

GC回收堆上的内存

避免:1、减少new产生对象的次数

2、使用公用的对象(对象)

3、将String换为StringBuilder

9、你塔防项目中遇到的最大问题是什么,怎么解决?


10、移动相机动作在哪个函数里,为什么在这个函数里?

LateUpdate,是所有的Update结束后才调用,比较适合用于命令脚本的执行。官网上的例子是摄像机的跟随,都是所有Update的操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,但是视角里还未有角色,所谓的空帧出现。


11、分数的四则运算(编程题)

例如:输入  1/8+3/8  每个数字为1-9的整型,运算符左右为空格 输出 1/2 (要化简)(实现+-*/)


12、什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系变换到另一个坐标系中去。主要步骤有:

本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。


13、编程题

一个M*N的矩阵,随机取K行,每一列中最多只有一个1(没时间记不清了)


14、如何优化内存?

有很多种方式,例如:

1、压缩自带类库;

2、将暂时不用的以后还需要是使用的物体隐藏起来而不是直接Destry掉;

3、释放AssetBundle占用的资源;

4、降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;

5、使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab);

6、代码中少产生临时变量。


15、不定项选择会出现的名词

树的聚族索引,内存页,TCP报文,ACK,SYN,FIN......


16、应用题(C#)

  一个角色有静止,攻击,跳跃,俯冲,闪避等几个动作,当不做任何操作时,角色播放静止动作。

1、设计一个抽象类表现角色的状态。

2、角色在静止时可以攻击,松开攻击键则攻击停止。

  角色按键可闪避,跳跃当处于跳跃状态时可进行俯冲,

3、攻击开始时生成一个攻击开始特效,攻击结束生成攻击结束特效,跳跃开始生成跳跃特效,俯冲结束生成俯冲结束音效。

(具体按键已经给了枚举变量,特效与音效的函数已给出)

4、如果在跳跃,俯冲,下蹲过程中可以攻击,并当攻击结束要回到之前的状态,请设计一个具体思路和数据结构。


17、动态加载资源的方式?它们之间的区别

1、Resource.Load();

2、AssetBundle

区别:resource的方式需要把所有资源全部打入安装包,这对游戏的分包发布(微端)和版本升级(patch)所以unity推荐的方式是不用它,都用bundle的方式替代,把资源达成几个小的bundle,用哪个就load哪个,这样还能分包发布和patch,但是在开发过程中,不可能没更新一个资源就打一次bundle,所以editor环境下可以使用assetdatabase来模拟,这通常需要我们封装一个dynamic resource的loader模块,在不同的环境下做不同实现。


18、给定一串数组,找到数组中的三个数使的它们的积为最大的积。(编程)


19、一组学生排成一排,按照成绩给他们分配苹果,最少得一个,相邻的成绩高的多得一个。给定一个成绩数组,计算一共要多少苹果?


20、请描述游戏动画有哪几种,以及其原理?

主要有关节动画、骨骼动画、单一网络模型动画(关键帧动画)。

关节动画:把角色分成若干独立部分,一个部分对应一个网络模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画;

骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网络蒙在骨骼之外,决定角色的外观;

单一网络模型动画由一个完整的网络模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。


21、alpha blend工作原理

Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。


22、投一个骰子4次得到1次(包括1次)以上6点的几率和投两个骰子24次得到1次(包括1次)以上两个6点的几率是否相同,说出计算思路。


23、下列代码在运行中会产生几个临时对象?

sring a=new string("abc");

a=(a.ToUpper()+"123").Substring(0,2);

在C#中第一行是会报错的(Java中倒是可行)。

应该这样初始化:

string b=new string(new char[]{'a','b','c'});

5个临时对象。


24、tcp和udp的区别

1、基于连接与无连接

2、对系统资源的要求(TCP较多,UDP较少);

3、UDP程序结构较简单;

4、流模式与数据报(报文)模式;

5、TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

                          TCP                                           UDP

是否连接           面向连接                                面向非连接

传输可靠性        可靠                                           不可靠

应用场合            少量数据                                传输大量数据

速度                   慢                                             快


25、下列代码在运行中会发生什么问题?如何避免?

List <int> Is=new List<int>(new int[]{1,2,3,4,5});

foreach(int item in Is)

{

  Console.WriteLine(item *item);

  Is.Remove(item);

}

产生运行时错误,在Is.Remove(item)这行,因为foreach是只读的。不能一边遍历一边修改。

标签:动画,面试题,角色,攻击,记录下来,item,Unity,new,UDP
来源: https://blog.csdn.net/djcxd/article/details/121214794

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有