博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题总结
阅读量:3921 次
发布时间:2019-05-23

本文共 2504 字,大约阅读时间需要 8 分钟。

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

转载地址:http://ogmrn.baihongyu.com/

你可能感兴趣的文章
DotNetCore Web应用程序中的Session管理
查看>>
从业务需求抽象成模型解决方案
查看>>
Kafka
查看>>
Magicodes.IE 2.2发布
查看>>
应用交付老兵眼中的Envoy, 云原生时代下的思考
查看>>
.NET 开源项目 StreamJsonRpc 介绍[上篇]
查看>>
.NET Core微服务开发选项
查看>>
探讨NET Core数据进行3DES加密或解密弱密钥问题
查看>>
Vue 3拖更,尤雨溪介绍最新进展
查看>>
如何利用.NETCore向Azure EventHubs准实时批量发送数据?
查看>>
WPF 框架全构建环境虚拟机硬盘分享
查看>>
ABP框架 v3.0 已发布!
查看>>
使用.Net Core实现的一个图形验证码
查看>>
.NET 开源项目 StreamJsonRpc 介绍[中篇]
查看>>
Blazor带我重玩前端(三)
查看>>
基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
查看>>
实现业务数据的同步迁移 · 思路一
查看>>
龙芯开源社区上线.NET主页
查看>>
eShopOnContainers 知多少[11]:服务间通信之gRPC
查看>>
闲谈设计模式
查看>>