标题将图片的TextureType选项分别选为““Texture”和“Sprite”有什么区别
Sprite作为UI精灵使用,Texture作用模型贴图使用。Sprite需要2的整次幂,打包图片省资源
写出Animation的五个方法
AddClip 添加剪辑、Blend 混合、Play 播放、Stop 停止、Sample 采样
UGUI的三种渲染模式,以及他们的作用?
(1)Screen Space-Overlay(屏幕控件-覆盖模式)的画布会填满整个屏幕空间,并将画布下面的所有的UI元素置于屏幕的最上层,或者说画布的画面永远“覆盖”其他普通的3D画面,如果屏幕尺寸被改变,画布将自动改变尺寸来匹配屏幕
(2)Screen Space-Camera(屏幕空间-摄影机模式)和Screen Space-Overlay模式类似,画布也是填满整个屏幕空间,如果屏幕尺寸改变,画布也会自动改变尺寸来匹配屏幕。所不同的是,在该模式下,画布会被放置到摄影机前方。在这种渲染模式下,画布看起来 绘制在一个与摄影机固定距离的平面上。所有的UI元素都由该摄影机渲染,因此摄影机的设置会影响到UI画面。在此模式下,UI元素是由perspective也就是视角设定的,视角广度由Filed of View设置。
(3)World Space即世界控件模式。在此模式下,画布被视为与场景中其他普通游戏对象性质相同的类似于一张面片(Plane)的游戏物体。画布的尺寸可以通过RectTransform设置,所有的UI元素可能位于普通3D物体的前面或者后面显示。当UI为场景的一部分时,可以使用这个模式。 它有一个单独的参数Event Camera,用来指定接受事件的摄像机,可以通过画布上的aphicRaycaster组件发射射线产生事件。
transform.localposition和transform.position有什么区别?
transform.localposition是自身坐标 ,transform.position是世界坐标
Unity3d的物理引擎中,有几种施加力的方式,分别描述出来
rigidbody.AddForce/AddForceAtPosition
什么是里氏代换元则?
里氏替换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。通俗点:就是子类对象可以赋值给基类对象,基类对象不能赋值给子类对象
什么是TCP什么是UDP?
第一种:
TCP面向连接,在发送数据之前,需要客户端和服务器之间建立连接,而UDP不需要实时连接,在每次传输时根据IP和端口号将报文发送给指定的用户。
TCP中有数据安全校验,更为安全和复杂,能够保障数据正确的传输,且有重发机制,能提供可靠的传输。
UDP结构较为简单,开销小,传输速度快,但不保证传输数据的正确性,因此UDP的传输不可靠。
但随着网络的不断升级,数据在传输过程中差错率已大大降低,UDP可以一对多的传输,且其程序开销小,传输速度快,因此其应用也越来越广泛。
第二种:
1.TCP提供的是面向连接的、可靠的数据流传输;UDP提供的是非面向连接的、不可靠的数据流传输。
2.TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失,不重复,按序到达;UDP尽最大努力交付,即不保证可靠交付。
3.TCP面向字节流;UDP面向报文。
4.TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信。
5.TCP首部开销20字节;UDP的首部开销小,只有8个字节。
6.TCP的逻辑通信信道是全双工的可靠信道;UDP的逻辑通信信道是不可靠信道。
二叉树的先序遍历
从根节点开始,按照根左右的方式来遍历这个二叉数(用C++写的,不管是哪一种语言,思想都是一样的,递归)
//二叉数节点定义
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNodem_pLeft;
BinaryTreeNodem_pRight;
}
//前序遍历
void PreOrderTraverse(BinaryTreeNode*pRoot)
{
if(pRoot==NULL)
return;
Visit(pRoot);
PreOrderTraverse(pRoot->m_pLeft);
PreOrderTraverse(pRoot->m_pRight)
}
UGUI的三种渲染方式
1.Screen Space – overlay 此模式不需要UI摄像机,UI将永远出现在所有摄像机的最前面;
2.Screen Space- Camera 它需要提供一个UICamera 。这样就和NGUI的原理很像了,如果我想在UI前面加特效我可以在创建一个摄像机深度大于这个UICamera就行了;
3.World Space 这个就是完全3D的UI。
List 和LinkedList的区别
List是接口,LinkedList都是实现的List接口;
LinkedList是以元素列表的形式存储它的数据,插入删除操作方便,但是查询不方便,效率不高
C#的内存分配
C#的内存分成5个区,包括栈,堆,自由存储区,静态存储区,常量存储区;
其中局部变量,函数参数存储在栈中,在需要的时候自动分配;new分配的对象会存储在堆中,调用delete函数可以释放内存空间,程序结束时会自动对那些没有被引用的内存空间进行垃圾回收;
Malloc申请的变量存储在自由存储区中,调用free方法释放;
全局变量和静态变量存储在静态存储区中;
常量存储在常量存储区中。
想要减少垃圾回收:少用new 多用公用变量 字符串拼接操作多的用stringbuilder