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