在Unity游戏开发在面试时会面试哪些内容?

1、请描述游戏动画有几种,以及其原理。 关键帧动画:每一帧动画序列当中包含了顶点的空间位置信息以及改变量,然后通过插值运算,得出动画效果。选中某一游戏对象,创建animation,添加属性Transform,MeshRender、collider。还可以添加关键帧,在关键帧上Add Animation Event事件。 骨骼动画:模型当中有一个骨骼结构层次的对象,存储了各个骨骼在空间内的位置信息。皮肤蒙皮附着在骨骼上,决定了角色的外观,每一个顶点数据都会随着多个骨骼影响而改变,从而实现动画效果。创建animator将各个动画拖入到动画状态机当中,设置参数,连接各个动画状态,在通过脚本控制来实现动画控制 关节动画:了解不多,是骨骼动画的前身,模型分成N个部分网格,分成部分动画,组成一个整体动画


2、Avator的作用 用户提供的模型骨架和Unity的骨架结构进行适配,是一种骨架映射关系。 方便动画的重定向 AnimationType有三种类型 Humanoid人型:可以动画重定向,游戏对象挂载animator,子类原始模型+重定向模型,设置原始模型和使用模型的AnimationType为Humanoid类型 Generic非人型 Legacy旧版 Avator Mask身体遮罩,身体某一部分是否受到动画影响 反向动力学 IK,通过手或脚来控制身体其他部分

对惹,这里有一个游戏开发交流小组,大家可以点击进来一起交流一下开发经验呀!


3、物体发生碰撞的必要条件 物体A有(Collider和Rigidbody)或者CharacterController,物体B有collider rigidbody完全受物理引擎影响 CharacterController物理引擎影响受限制


4、GUI与UGUI的优点和缺点 UGUI所见即所得,UGUI使用Canvas和事件系统,UGUI还能自适应屏幕 GUI在脚本周期中使用OnGui函数,通过脚本代码控制。OnGui性能消耗大,每一次渲染都是一个DrawCall 在手游端都在寻求原生GUI的替代方案


5、一个场景放置多个carmera并同时处于活动状态,会发生什么 多个Camera渲染画面,受到Camera组件的属性ClearFlag、CullingMask和Depth的影响,影响最终的合成画面。


6、使用过哪些插件 shader graph制作shader光影效果 cinemachine+timeline+postprocessingstack制作过场动画 nodecanvas制作怪物ai easytouch手游触摸控制


7、U3D 中用于记录节点空间几何信息的组件名称,及其父类名称 Transform继承于Component继承于Object 常用脚本继承类关系 链接: 参考资料.


8、请简述如何在不同分辨率下保持 UI 的一致性 Canvas画布设置组件CanvasScaler的分辨率模式为Scale with screen size,保持画布一定比例下随屏幕改变,画布进行缩放。 UI位置的一致性通过设置锚点,Anchor Presets锚点预设


9、MeshFilter、MeshRender 和 SkinnedMeshRender 的关系与不同 MeshFilter网格过滤器,通过mesh属性获取模型网格 MeshRender网格渲染器,渲染Material,lighting,probe探针 SkinnedMeshRender蒙皮网格渲染器,渲染人物模型,渲染基本属性,材质,光照,探针,其他设置属性 Unity换装主要是切换Mesh、root bone和材质贴图


10、简述 SkinnedMesh 的实现原理 SkinnedMesh蒙皮网格动画 分为骨骼和蒙皮两部分 骨骼是一个层次结构,存储了骨骼的Transform数据 蒙皮是mesh顶点附着在骨骼之上,顶点可以被多个骨骼影响,决定了其权重等, 还有将顶点从Mesh空间变换到骨骼空间~


11、Prefab 的作用?Editor下动态创建Prefab的方式? prefab是素材,模型,贴图,shader等默认配置的集合体,便于修改 prefab已经被序列化存储在二进制文件当中,方便传输,方便打包导出的操作 prefab是一个模板,方便进行实例化 团队协作的便捷性

使用脚本publci字段,直接将prefab拖拽到这个字段下 Asset文件夹下,创建Resource文件夹,prefab放入,在代码里使用Resource.load(“prefab名称”)


12、如何销毁一个 UnityEngine.Object 及其子类 Destroy


13、为什么 Unity3D 中会发生在组件上出现数据丢失的情况? 组件被删除了


14、如何安全的在不同工程间安全地迁移 asset 数据?三种方法 导出包export package 将assets文件夹和libarary文件加一起迁移 unity自带的assets server功能 (不懂这个功能,上面两个方法用的多)


15、MeshCollider 和其他 Collider 的一个主要不同点? MeshCollider是基于顶点数据,片面组成,消耗性能 BoxCollider是基于算法的,性能好


16、当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何避免? fixedupdate中代码控制,代码中两个位置进行射线检测,射线碰撞信息 增加碰撞体体积,射线穿过,射线长度增加 rigidbody刚体设置两个参数Interpolate急速插值和CollisionDetection碰撞检测


17、MeshRender 中 material 和 sharedmaterial 的区别? 两者是MeshRender的属性 sharedMaterial 是共用的 Material,称为共享材质。修改共享材质会改变所用使用该材质的物体,并且编辑器中的材质设置也会改变。 material 是独立的 Material,返回分配给渲染器的第一个材质。修改材质仅会改变该物体的材质。如果该材质被其他的渲染器使用,将克隆该材质并用于当前的渲染器。


18、用 u3d 实现 2d 游戏,有几种方式? 摄像机改为正交模式 使用引擎改为2D系统 使用UGUI


19、u3d 中碰撞器和触发器的区别? 碰撞器有碰撞效果,触发器会穿过,但能检测到 collider设置属性isTrigger为True OnCollisionEnter/Stay/Exit OnTriggerEnter/Stay/Exit 触发器可以用来检测物体是否经过某片空间


20、CharacterController 和 Rigidbody 的区别 CharacterController一般用在人型角色,继承于Collider,可以认为是受限的Rigidbody Rigidboy完全受物理引擎影响,质量,阻力等属性,Is Kinematic不受物理引擎影响,通过代码改变Transform。


21、什么叫做链条关节 Hinge Joint,模拟两个物体之间有一个链条连接 在某个距离内只会发生移动不产生作用力,类似门的效果 超过某个距离会产生拉力,弹簧的效果


22、unity3d 提供了几种光源,分别是什么 Direction平行光 Point点光源 Spot聚光灯 Area区域光(烘焙用)


23、动画层(Animation Layers)的作用是什么? 动画分层 身体部位动画分层,比如我只想动动头,身体其他部分不发生动画 可以方便处理动画区分


24、Material 和 Physic Material 区别? 物理材质:处理物理效果,比如滑动摩擦力,静态摩擦力,反弹等属性 Material就是普通的贴图


25、什么是导航网格( NavMesh)? 用于自动寻路的网格 比如A*寻路 链接: 更加详细的参考资料.


26、Unity 摄像机有几种工作方式,分别是什么? 正交模式和透视模式


27、UGUI相关概念 UGUI锚点,相对于父对象,屏幕自适应 UGUI分为世界坐标和屏幕坐标 UGUI的Image可以使用material UGUI不需要绑定collider,UI事件会拦截 UGUI通过Mask来裁剪 UGUI顺序根据Hierarchy顺序,越下面渲染在最上层


28、Unity3d中static batching和dynamic batching 各有什么用? 动态批处理和静态批处理,都是在一定条件下,对多次的DrawCall请求进行合并处理,减少CPU的DrawCall数量,达到提高性能的目的

静态批处理将静态的游戏对象组合成大网格(不移动) 对游戏对象Static属性设置成batching static , 前提要共享材质且不移动,不缩放,不旋转

动态批处理是将很小的网格,将类似的顶点组合到一起,一次性绘制 不需要任何操作,可以旋转,缩放,移动 前提是共享材质,且不包含900顶点不超300顶点网格


29、Unity3d中Awake和Start 谁先执行,update和fixedUpdate 有什么区别? awake先执行,一般用来初始化成员变量 start设置物体属性和渲染 fixedUpdate固定帧渲染,用于更新渲染物理引擎 update帧渲染,用于更新操作


30、向量的运算有哪些?Unity有哪些API可以计算 加法减法:物理上计算两个力的合力或者几个速度分量的叠加Vertor3(a1+b1,a2+b2,a3+b3) 数乘:向量与一个标量相乘,变量的正负,表示方向的正反方向变化,对向量的长度进行缩放 点乘:a点乘b得到一个标量,集合意义是a和b长度相乘再乘以两者夹角的余弦 叉乘:a叉乘b得到一个新向量,满足unity的左手坐标系

Vector3类 单位化normalized 向量长度magnitude 叉乘cross 点乘 dot 两向量夹角 angle 距离 distance 投影 project


31、UI面板层级管理 如果分为三层结构,可以使用Unity自带的Api在Hierarchy Transofrm类 SetAsFirstSiBling 列表开头 SetAsLastSiBling 列表最后 SetSiBlingIndex 同级索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906688.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot:打造动态定时任务,开启灵活调度之旅

一、描述 在 Spring Boot 中设置动态定时任务是一种非常实用的功能,可以根据实际需求在运行时动态地调整定时任务的执行时间、频率等参数。以下是对 Spring Boot 设置动态定时任务的简单介绍: 1、传统定时任务的局限性 在传统的 Spring Boot 定时任务…

Lua 从基础入门到精通(非常详细)

目录 什么是 Lua? Lua 环境安装 Lua基本语法 注释 数据类型 nil(空) Boolean number(数字) string(字符串) function(函数) userdata thread table&#xff…

PostgreSQL 到 PostgreSQL 数据迁移同步

简述 PostgreSQL 是一个历史悠久且广泛使用的数据库,不仅具备标准的关系型数据库能力,还具有相当不错的复杂 SQL 执行能力。用户常常会将 PostgreSQL 应用于在线事务型业务,以及部分数据分析工作,所以 PostgreSQL 到 PostgreSQL …

GESP4级考试语法知识(捕捉异常)

参考程序代码&#xff1a; #include <iostream> using namespace std;double divide(double a, double b) {if (b 0) {throw "Division by zero error"; // 抛出异常}return a / b; }int main() {double num1, num2;cout << "Enter two numbers:…

新老项目不同node版本,使用nvm控制node版本切换(mac、window)

window系统电脑的链接&#xff1a;https://blog.csdn.net/qq_40269801/article/details/136450961 以下是mac版本的操作方式&#xff1a; 1、打开终端 克隆 NVM 仓库&#xff1a; git clone https://github.com/nvm-sh/nvm.git ~/.nvm 2、运行安装脚本&#xff1a; cd ~/.n…

HTTP与HTTPS协议

HTTP协议&#xff0c;即超文本传输协议&#xff08;HyperText Transfer Protocol&#xff09;&#xff0c;是互联网中一种用于在Web浏览器与Web服务器之间传输数据的应用层协议。它的核心理念是提供一种简单、灵活的方式来请求和响应信息&#xff0c;是现代万维网的基础。 1. 什…

R语言机器学习与临床预测模型79--机器学习总览

R小盐准备介绍R语言机器学习与预测模型的学习笔记 你想要的R语言学习资料都在这里&#xff0c; 快来收藏关注【科研私家菜】 01 机器学习分类 机器学习模型主要分为有监督、无监督和强化学习方法。 监督学习 监督学习是教师向学生提供关于他们在考试中是否表现良好的反馈。其中…

Diving into the STM32 HAL-----HAL_GPIO

1、怎么看待外设&#xff1a; 从总线连接的角度看&#xff0c;外设和Core、DMA通过总线交换数据&#xff0c;正所谓要想富先修路。要注意&#xff0c;这些总线中的每一个都连接到不同的时钟源&#xff0c;这些时钟源决定了连接到该总线的外设操作的最大速度。 从内存分配的角度…

FlinkCDC-MYSQL批量写入

一、运行环境 &#xff08;1&#xff09;Flink&#xff1a;1.17.2 &#xff08;2&#xff09;Scala&#xff1a;2.12.20 &#xff08;3&#xff09;Mysql&#xff1a;5.7.43 ##开启binlog 二、代码示例 思路&#xff1a;通过滚动窗口收集一批数据推给sink消费。binlog日志对…

集合(数组、链表、map)

目录 Collection包结构 和collections区别 List 数组和arrayList 区别 数组下标为什么从0开始&#xff1f; ArrayList 动态数组 LinkedList双向链表增删快 增删快 链表 单链表和双链表区别 Arraylist VS LinkedList 区别 数组和List之间转换 ArrayList 、LinkedList…

多线程和线程同步基础篇学习笔记(Linux)

大丙老师教学视频&#xff1a;10-线程死锁_哔哩哔哩_bilibili 目录 大丙老师教学视频&#xff1a;10-线程死锁_哔哩哔哩_bilibili 线程概念 为什么要有线程 线程和进程的区别 在处理多任务的时候为什么线程数量不是越多越好? Linux提供的线程API 主要接口 线程创建 pth…

希望十一月对我好一点:C++之多态(2)--多态的原理(部分)

多态的原理 虚函数表指针 下⾯编译为32位程序的运⾏结果是什么&#xff08;&#xff09; A. 编译报错 B.运⾏报错C.8 D.12 class Base{public:virtual void Func1(){cout << "Func1()" << endl;}protected:int _b 1;char _ch x;};int main(){Base b…

Java: 遍历 Map

Java: 遍历 Map package animals;import java.util.HashMap; import java.util.Iterator; import java.util.Map;/*** Description :** author : HMF* Date : Created in 15:33 2024/11/1* version :*/ public class Test002 {public static void main(String[] args){Map<S…

基于vue+neo4j 的中药方剂知识图谱可视化系统

前言 历时一周时间&#xff0c;中药大数据R02系统中药开发完毕&#xff0c;该系统通过scrapy工程获取中药数据&#xff0c;使用python pandas预处理数据生成知识图谱和其他相关数据&#xff0c;利用vuespringbootneo4jmysql 开发系统&#xff0c;具体功能请看本文介绍。 简要…

01.如何用DDD重构老项目

学习资料来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 动机DDD与重构实践重构? 重写从一开始就采用DDD重构步骤1. 添加领域模块2.分离出有价值的代码3.迁移到领域模块4.重复2,3 动机 …

WPF+MVVM案例实战(十八)- 自定义字体图标按钮的封装与实现(ABD类)

文章目录 1、案例效果1、按钮分类2、ABD类按钮实现描述1.文件创建与代码实现2、样式引用与控件封装3、按钮案例演示1、页面实现与文件创建2、运行效果如下3、总结4、源代码获取1、案例效果 1、按钮分类 在WPF开发中,最常见的就是按钮的使用,这里我们总结以下大概的按钮种类,…

Python 5个数据容器

列表&#xff08;list&#xff09; 列表的定义 定义空列表&#xff1a; 变量名 [] 或 变量名 list() 定义变量&#xff1a; 变量名 [元素1&#xff0c;元素2&#xff0c;元素3&#xff0c;... ] 取出列表元素 列表 [下标索引] 从前向后&#xff0c;从0开始&#xff…

使用语言模型进行文本摘要的五个级别(llm)

视频链接&#xff1a;5 Levels Of LLM Summarizing: Novice to Expert

Qt5.15.x源码编译

介绍&#xff1a; QT5.15以上版本已经不提供现成的集成软件了。所以当我们项目中需要用到5.15以上的版本时&#xff0c;只能自己对源码进行编译来生成一个环境了&#xff08;Qt提供了在线升级&#xff0c;但是在线升级中没有MinGW版本了&#xff09; 背景&#xff1a; 我们想要…

Ubuntu 系统、Docker配置、Docker的常用软件配置(下)

前言 书接上文&#xff0c;现在操作系统已经有了&#xff0c;作为程序的载体Docker也安装配置好了&#xff0c;接下来我们需要让Docker发挥它的法力了。 Docker常用软件的安装 1.Redis 缓存安装 1.1 下载 docker pull redis:7.4.1 #可改为自己需要的版本 1.2 创建本地目录存储…