每日笔试题练习1

一、值类型和引用类型的区别

  1. 传值调用是将实参的值传递给被调用函数的形参。因此实参既可以是表达式,也可以是变量(或数组元素)。
  2. 传地址调用是将实参的地址传给被调用函数的形参。所以,实参必须有地址。因此实参必须是变量(数组),不能是表达式或常量(因为他们不存在地址)。
  3. 如果采用值调用,相当于复制出一个相同值进行使用,值变化不影响本体
  4. 如果采用引用调用,相当于通过引用地址来使用被调用的本体,修改引用会影响本体

二、字符串切割与拼接

  1. 切割:Split(’’);
  2. 拼接:StringBuilder、+、string.Format、List

三、计算A点(0,0,1)到B点(1,1,1)的方向向量

答:(01,01,1*1)=(0,0,1)

四、点乘与叉乘的区别

首先最明显的区别是点乘的结果是一个标量,叉乘的结果是一个Vector向量,点乘用于求投影和角度,而叉乘用于求方向向量

假设A(a1,b1,c1) B(a2,b2,c2)
点乘:a1a2+b1b2+c1c2
叉乘:(a1
a2,b1b2,c1c2)

五、UGUI中的网格重构,动静分明

UGUI需要进行动静分离。也就是说同一个界面下的UI,可活动的元素放在一个Canvas下,不可活动或较少活动的元素放在另一个Canvas下。虽然两个Canvas打断了合批,但是却减少了网格的重建时间,总体上是有优化的。

究其原因,是因为在同一个Canvas下的某个元素发生变化时,同一Canvas下的所有元素都会进行网格重建(ReBatch)。而静态的元素在逻辑上是不需要重建的,因为他们都没变过,所以需要分开。最常见体现在战斗摇杆UI和角色头像UI动静分离。

UGUI的网格重建分为2部分,一个是ReBatch,一个是ReBuild。

当你的Canvas下的一个元素发生变化了,就会重新绘制当前Canvas下的所有的可绘制元素,不管其是否变化过。重新计算其图片、位置、缩放、文本等等元素。这一部分就是ReBatch。

而Rebuild在ReBatch之后,是每个UI元素自己的操作。比如A元素变了,而B元素没有变,那么A元素就自己改一下自己就好了。至于哪些元素需要Rebuild,则在 Canvas.BuildBatch 里面就计算好了。

六、什么是AssetBundle?作用是什么?

AssetBundle 简称AB包,是一个unity自带的一种资源整合包,处理后的里面包含可以存放游戏资源,AB包可减少每次更新游戏时所需要下载的资源包,不需要重新卸载安装,玩家可以在游戏运行需要这些资源的时候被加载,制作AssetBundle的过程相当于把这些资源打成一个包的过程,这个包可以存放在服务器中通过网络下载进行实时资源替换更新。

AssetBundle自身保存着互相的依赖关系:比如说一个包是保存模型的,另一个包是保存贴图的,因为模型可能依赖于贴图则导致模型的包依赖于贴图的包。AssetBundle自身会保存这个依赖关系。

压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输。

注意:使用压缩包是为了方便校验文件的完整性。AB包可以配合Lua实现资源和游戏 逻辑代码的更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值