面试题总结

1.ui中的batching 一个红色一个蓝色 怎么合并它们?

batching:批处理    打图集,合并材质

2.2个物体都挂了脚本,从a物体的第一个开始,说下awakw.onenable.start顺序。

3.点乘和叉乘在数学上的体现和是什么类型的值?

点乘计算角度,值是标量,叉乘计算方位,值是向量

4.assetbundle下载下来的是放在哪个文件夹里?

assetbundle下载到persistentDataPath,就说是沙盒目录,可读可写

放在LuaFramework文件夹下。

5.光照模型lambert的内部计算?

lambert,是光照方向和法线向量的点乘

6.法线贴图怎能烘焙?

可以根据原贴图生成一个简单的法线贴图,但是效果很low

一般好的法线贴图都是,根据高模映射烘焙出来的

然后我们游戏中使用低模+高模烘焙的法线贴图,效果跟高模一模一样,性能却提升了N倍

7.moba游戏中血条是怎么在玩家头上现实的?

用的ugui,就一个血条,在画布中,只是让血条ui在画布中跟着世界坐标系的人物一起移动的

8.Unity脚本和lua怎么互相调用?

luainterface是一个提供.net和lua交互的类库.

9.UNITY生命周期

(1) Reset() 组件重设为默认值时(只用于编辑状态)

(2)Awake() 脚本组件载入时 (调用一次)

(3)OnEnable() 是在游戏对象可以调用时调用

(4) Start()第一个Update发生之前 (调用一次)

(5)FixedUpdate() 固定时间调用,常用于物理相关的计算,比如对Rigidbody的操作

(6)Update()大部分游戏行为代码被执行的地方,除了物理代码

(7)LateUpdate() 每帧Update调用之后

(8)OnGUI() 绘制GUI时调用

(9)OnDisable() 当对象设置为不可用时

(10)OnDestroy()组件销毁时调用

10.RECTTRANSFORM下面的所有属性,使用代码控制锚点

obj.transform.GetComponent().SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0, 0); obj.transform.GetComponent().SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, 0, 0);

11.C#:GC是什么,如何主动使用GC?

c#中的GC全称是garbage collection,也就是我们平日里说的垃圾回收器,用来回收引用类型对象所占用的内存,

啰嗦一句,GC是如何判定对象需要回收那,很简单,只要这个对象和子对象没有有效的引用(值为null时),即判定是垃圾,回收

另外:System命名空间有GC类,让编程人员控制垃圾回收器

Sysytem.GC.Collection();

12.数据结构是什么?

数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。 数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。

13.结构体是什么?

其实结构体也是一种数据类型,只不过在这种数据类型中又包含了几个基本的数据类型;

14.进程和线程?

什么是进程(Process):普通的解释就是,进程是程序的一次执行,而什么是线程(Thread),线程可以理解为进程中的执行的一段程序片段

15.网络TCP UDP HTTP

16.LUA实现面向对象原理

17.精灵移动造成网格刷新怎么解决

18.为什么用LUA来做热更新

19.UNITY:UI上实现特效。

20.多线程跟协程的区别?

协程和线程的区别是:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多CPU的能力。

21.多个物体在空中无规则运动怎么实现?

22.不使用foreach遍历字典

(1)var iter = spawners.Keys.GetEnumerator();

            while (iter.MoveNext())

            {

            var key = iter.Current;

            }

(2) var enumerator = dic.GetEnumerator();

        while (enumerator.MoveNext())

        {

            Debug.Log("while " + enumerator.Current.Key + " " + enumerator.Current.Value);

       }

23.lua和C#交互原理

1.C#调用lua,使用LuaInterface,LuaInterface是用于实现Lua和CLR的混合编程的库。

2.lua调用C#,反射和非反射。

1.反射,通过反射得到C#中的类和方法,然后通过lua语法控制C#

2.非反射,cstolua提供了一个框架,帮助我们把C#脚本生成一个_Wrap文件,ulua在启动时会加载这些_Wrap文件,使每一个C#的类对应一个lua中的userdata,然后再在lua中调用C#类时,就可以直接通过userdata的引用拿到相应的C#类和对象,大大提高了效率。

24.require,dofile,dostring区别

require,参数是路径,会在package.loaded中查找该lua是否已经加载,没找到的话,载入文件并执行代码块,对于相同的文件只执行一次

  dofile,会吧参数的lua文件直接执行,不考虑是否加载过,所以同一个文件会被执行多次

  dostring,等于dofile

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值