Unity最常见的面试题-03

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: unity最常见的面试题,总有一题是你急需的!

前言:小弟收集了网上各大面试题并按照它们出现的频率进行了整理,如果对你有所帮助,欢迎评论和点赞,感谢~

图片.png


一.简述四元数的作用,四元数对欧拉角的优点

四元数用于表示旋转

相对欧拉角的优点:

1.能进行增量旋转

2.避免万向锁

3.给定方位的表达方式有两种,互为负(欧拉角有无数种表达方式)


二. 请简述值类型与引用类型的区别

1.值类型存储在内存栈中,引用类型数据存储在内存堆中,实际存放的是内存堆中对象的地址。

2.值类型存取快,引用类型存取慢。

3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用。

4.栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放。

5.值类型继承自System.ValueType(它的父类是System.Object),引用类型继承自System.Object。


三.C#中所有引用类型的基类是什么

引用类型的基类是System.Object 值类型的基类是System.ValueType

同时,值类型也隐式继承自System.Object


四.请简述ArrayList和List的主要区别

ArrayList存在不安全类型(ArrayList会把所有插入其中的数据都当做Object来处理)

装箱拆箱的操作(费时)

IList是接口,AIrrayList和List都是实现了该接口的类,可以被实例化。


五.摄像机跟随人物移动

Transform player;


   Vector3 offset=Vector3.zero;//偏移量


   public float moveSpeed = 10f;//摄像机的移动速度

   void Awake()

   {

       player = GameObject.FindGameObjectWithTag(Tags.player).transform;


       offset = transform.position - player.position ;

   }


   // Update is called once per frame

   void Update()

   {

       Vector3 targetPos = player.position + offset;

       transform.position= Vector3.Lerp(transform.position, targetPos, moveSpeed*Time.deltaTime);//参数顺序很重要

   }


六.C#中四种访问修饰符是哪些?各有什么区别?

1.属性修饰符 2.存取修饰符 3.类修饰符 4.成员修饰符。

属性修饰符:

Serializable:按值将对象封送到远程服务器。

STATread:是单线程套间的意思,是一种线程模型。

MATAThread:是多线程套间的意思,也是一种线程模型。

存取修饰符:

public:存取不受限制。

private:只有包含该成员的类可以存取。

internal:只有当前工程可以存取。

protected:只有包含该成员的类以及派生类可以存取。

类修饰符:

abstract:抽象类。指示一个类只能作为其它类的基类。

sealed:密封类。指示一个类不能被继承。理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。

成员修饰符:

abstract:指示该方法或属性没有实现。

sealed:密封方法。可以防止在派生类中对该方法的override(重载)。不是类的每个成员方法都可以作为密封方法密封方法,必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed修饰符总是和override修饰符同时使用。

delegate:委托。用来定义一个函数指针。C#中的事件驱动是基于delegate + event的。

const:指定该成员的值只读不允许修改。

event:声明一个事件。

extern:指示方法在外部实现。

override:重写。对由基类继承成员的新实现。

readonly:指示一个域只能在声明时以及相同类的内部被赋值。

static:指示一个成员属于类型本身,而不是属于特定的对象。即在定义后可不经实例化,就可使用。

virtual:指示一个方法或存取器的实现可以在继承类中被覆盖。

new:在派生类中隐藏指定的基类成员,从而实现重写的功能。 若要隐藏继承类的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。


7.概述c#中代理和事件?

代理就是用来定义指向方法的引用。

C#事件本质就是对消息的封装,用作对象之间的通信;发送方叫事件发送器,接收方叫事件接收器


图片.png




相关文章
|
存储 网络协议 安全
Unity最常见的面试题-02
unity最常见的面试题,总有一题是你急需的!
|
人工智能 算法 图形学
Unity最常见的面试题-04
unity最常见的面试题,总有一题是你急需的!
|
缓存 Java 调度
Unity最常见的面试题-01
unity最常见的面试题,总有一题是你急需的!
|
存储 人工智能 算法
Unity面试题——数据结构算法相关
Unity面试题——数据结构算法相关
244 1
|
图形学
Unity面试题——逻辑题
Unity面试题——逻辑题
157 0
|
存储 编解码 小程序
Unity面试题——图形学相关
Unity面试题——图形学相关
448 0
|
设计模式 开发框架 算法
Unity面试题——设计模式相关
Unity面试题——设计模式相关
169 0
|
网络协议 安全 关系型数据库
Unity面试题——服务器数据库等杂项
Unity面试题——服务器数据库等杂项
141 0
|
存储 设计模式 缓存
Unity面试题——Unity性能优化
Unity面试题——Unity性能优化
399 0
|
3月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
159 6