Unity 基础知识总结(持续更新中...)
引擎基础
Unity有哪几个主要窗口?
| Scene窗口 | 用于场景搭建和UI界面拼接 |
| Game窗口 | 游戏运行预览 |
| Hierarchy窗口 | 查看和调整场景对象层级结构 |
| Project窗口 | 游戏工程资源 |
| Inspector创建 | 属性查看器,属性设置、脚本组件挂载 |
Unity提供了几种光源,分别是什么
一共有四种
- Directional Light 平行光
- Point Light 点光源
- Spot Light 聚光灯
- Area Light区域光
Image和RawImage有啥区别?
1、Image比RawImage更消耗性能
2、Image只能Sprite精灵图片,而RawImage可以显示任何纹理
3D碰撞器有哪些?
共有6种:
| BoxCollider | 盒子碰撞器 |
| SphereCollider | 球体碰撞器 |
| CapsuleCollider | 胶囊碰撞器 |
| WheelCollider | 车轮碰撞器 |
| MeshCollider | 网格碰撞器 |
| TerrainCollider | 地形碰撞器 |
2D碰撞器有哪些?
共有6种
| BoxCollider2D | 盒子碰撞器 |
| CircleCollider2D | 圆圈碰撞器 |
| CapsuleCollider2D | 胶囊碰撞器 |
| EdgeCollider2D | 边缘碰撞器 |
| PolygonCollider2D | 多边形碰撞器 |
| CompositeCollider2D | 组合碰撞器 |
简述一下prefab的用处?
1、方便协同工作,美术、策划可以进行修改和调整。
2、相当于一个具有相同参数模板,方便我们搭建场景和拼接界面,提高开发效率。
3、方便我们在场景中通过代码进行实例化
碰撞器和触发器有什么区别?
碰撞器是触发器的载体,触发器是碰撞器身上的一个属性
碰撞器有碰撞效果,IsTrigger = false,可以调用OnCollisionEnter/OnCollisionStay/OnCollisionExit函数
触发器没有碰撞效果,IsTrigger = true,可以调用OnTriggerEnter/OnTriggerStay/OnTriggerExit函数
Unity的渲染管线的类型有哪些?
| 名词 | 简称 | 描述 |
| Built-in Render Pipeline | BRP | 内置渲染管线 |
| Universal Render Pipeline | URP | 通用渲染管线 |
| High Definition Render Pipeline | HDRP | 高清渲染管线 |
| Scriptable Render Pipeline | SRP | 自定义渲染管线 |
物体发生碰撞效果的必要条件?
双方都要添加碰撞体,任意一方添加刚体组件
发生触发检测的条件?
双方都要添加碰撞体,任意一个方勾选IsTrigger属性,运动的一方添加刚体组件
移动相机动作在哪个函数里,为什么在这个函数里?
LateUpdate,是在所有的update结束后才调用,比较适合于控制脚本的执行顺序。官网上例子是摄像机的跟随,都是所有的update操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
骨骼动画有哪些类型?
1、None:不存在动画的模式
2、Legacy:旧版动画模式
3、Generic:通用动画模式,适用于人形或非人形
4、Humanoid:人形角色动画模式,只适用于人形
Canvas画布的渲染模式
- Screen Space-Overlay:所有UI元素都渲染在场景中的最上层
- Screen Space-Camera:画布放置在指定摄像机前面的给定距离处。场景中的物体可以显示在UI前面
- World Space:应用:让Canvas更像一个游戏对象,可以在场景中移动,常用于制作跟随角色的血条
什么叫做链条关节?
Hinge Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。
图片的类型有哪些将图片的TextureType选项分别选为Texture和Sprite有什么区别
Sprite作为UI精灵使用,Texture作用模型贴图使用。
Animation和Animator的区别
Animation和Animator 虽然都是控制动画的播放,但是它们的用法和相关语法都是大有不同的。Animation控制一个动画的播放,而Animator是多个动画之间相互切换,并且Animator有一个动画控制器,俗称动画状态机。
Animator利用它做动画的切换是很方便的,但是它有一个缺点就是占用内存比Animation大。
MeshRender中material和sharedmaterial的区别?
答:修改sharedMaterial将改变所有物体使用这个材质的外观,并且也改变储存在工程里的材质设置。 不推荐修改由sharedMaterial返回的材质。如果你想修改渲染器的材质,使用material替代。
脚本基础
脚本生命周期
事件函数的执行顺序 - Unity 手册
| Awake | 始终在任何 Start 函数之前并在实例化预制件之后调用此函数。(如果游戏对象在启动期间处于非活动状态,则在激活之后才会调用 Awake。)在加载场景时调用,用于脚本初始化 |
| OnEnable | (仅在对象处于激活状态时调用)在启用对象后立即调用此函数。在创建 MonoBehaviour 实例时(例如加载关卡或实例化具有脚本组件的游戏对象时)会执行此调用。 |
| Reset | 调用 Reset 可以在脚本首次附加到对象时(Editor状态) |
| Start | 仅当启用脚本实例后,才会在第一次帧更新之前调用 Start。用于实例化,Awake之后Update之前 |
| FixedUpdate | 固定帧(固定的时间间隔,不受帧率(FPS)影响)更新,更新频率默认为0.02s.FixedUpdate比较适用于物理引擎的计算。 |
| Update | 用于逻辑运算 |
| LateUpdate | 在Update之后调用,用于调整脚本执行顺序,或者LateUpdate 的常见用途是跟随第三人称摄像机。 |
| OnGUI | 每帧调用多次以响应 GUI 事件。首先处理布局和重新绘制事件,然后为每个输入事件处理布局和键盘/鼠标事件。 |
| OnDisable | 行为被禁用或处于非活动状态时,调用此函数。 |
| OnDestroy | 当MonoBehaviour将被销毁时,被调用 |
控制角色移动有哪些方法?
【Unity入门】物体5种移动方法_1、unity3d中实现游戏物体位置变化的几种方法?-CSDN博客
public float speed;
public float jumpHeight;if (Input.GetKey(KeyCode.W))
{transform.position += new Vector3(0,0,speed*Time.deltaTime);
}if (Input.GetKey(KeyCode.S))
{transform.position += new Vector3(0,0,-speed*Time.deltaTime);
}if (Input.GetKey(KeyCode.A))
{transform.position += new Vector3(-speed*Time.deltaTime,0,0);
}if (Input.GetKey(KeyCode.D))
{transform.position += new Vector3(speed*Time.deltaTime,0,0);
}if (Input.GetKeyDown(KeyCode.Space))
{transform.position = new Vector3(0,jumpHeight,0);
}
if (Input.GetKey(KeyCode.W))
{// transform.position += new Vector3(0,0,speed*Time.deltaTime);transform.Translate(Vector3.forward*speed*Time.deltaTime);
}if (Input.GetKey(KeyCode.S))
{// transform.position += new Vector3(0,0,-speed*Time.deltaTime);transform.Translate(Vector3.back*speed*Time.deltaTime);
}if (Input.GetKey(KeyCode.A))
{// transform.position += new Vector3(-speed*Time.deltaTime,0,0);transform.Translate(Vector3.left*speed*Time.deltaTime);
}if (Input.GetKey(KeyCode.D))
{// transform.position += new Vector3(speed*Time.deltaTime,0,0);transform.Translate(Vector3.right*speed*Time.deltaTime);
}
if (Input.GetKey(KeyCode.W))
{rb.AddForce(0,0,speed*Time.fixedDeltaTime);
}if (Input.GetKey(KeyCode.S))
{rb.AddForce(0,0,-speed*Time.fixedDeltaTime);
}if (Input.GetKey(KeyCode.A))
{rb.AddForce(-speed*Time.fixedDeltaTime,0,0);
}if (Input.GetKey(KeyCode.D))
{rb.AddForce(speed*Time.fixedDeltaTime,0,0);
}
private CharacterController cc;cc = GetComponent<CharacterController>();if (Input.GetKey(KeyCode.W))
{cc.Move(Vector3.forward*speed*Time.deltaTime);
}if (Input.GetKey(KeyCode.S))
{cc.Move(Vector3.back*speed*Time.deltaTime);
}if (Input.GetKey(KeyCode.A))
{cc.Move(Vector3.left*speed*Time.deltaTime);
}if (Input.GetKey(KeyCode.D))
{cc.Move(Vector3.right*speed*Time.deltaTime);
}
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
transform.Translate(horizontal*speed*Time.deltaTime,0,vertical*speed*Time.deltaTime);float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
transform.position += new Vector3(horizontal*speed*Time.deltaTime,0,vertical*speed*Time.deltaTime);float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
rig.AddForce(horizontal*speed*Time.fixedDeltaTime,0,vertical*speed*Time.fixedDeltaTime);
PlayerPrefs有哪些常用API?
PlayerPrefs类是一个本地持久化保存与读取数据的类
PlayerPrefs类支持3中数据类型的保存和读取,整形,浮点型,和字符串型
PlayerPrefs.SetInt("整型",250);
PlayerPrefs.GetInt("整型",438);PlayerPrefs.SetFloat("浮点型",3.14f);
PlayerPrefs.GetFloat("浮点型", 3.333f);PlayerPrefs.SetString("字符串","清一色");
PlayerPrefs.GetString("字符串", "大三元");
获取、增加、删除组件的命令分别是什么?

介绍一下协程,协程有什么作用?
定义:协同程序,即在主程序运行的同时开启另一段逻辑处理来协同当前的程序执行,所有的协同程序都是在主线程中运行的,它还是一个单线程程序。在Unity中通过StartCoroutine方法来启动协同程序。使用yield关键字来中断协同程序
作用:
用于在单一线程上执行多个任务,实现异步等待和延迟执行等效果
协程可以在不创建新线程的情况下实现异步等待和延迟执行,避免了线程切换和同步等问题,从而提高了程序的性能和效率。在Unity中,协程通常用于处理一些异步任务,比如等待一段时间、播放动画、加载资源等。协程是辅助主线程的操作,避免游戏卡顿。
简述CharcaterController和Rigidbody的区别?
Rigidbody具有完全真实物理的特性,而CharacterController可以说是受限的的Rigidbody,具有一定的物理效果但不是完全真实的。
localPosition 与 Position 的使用区别?
localPosition :自身坐标系,相对于父级的位置
Position :世界坐标系中的位置
相关文章:
Unity 基础知识总结(持续更新中...)
引擎基础 Unity有哪几个主要窗口? Scene窗口 用于场景搭建和UI界面拼接 Game窗口 游戏运行预览 Hierarchy窗口 查看和调整场景对象层级结构 Project窗口 游戏工程资源 Inspector创建 属性查看器,属性设置、脚本组件挂载 Unity提供了几种光源…...
IDEA接入阿里云百炼中免费的通义千问[2025版]
安装deepseek 上一篇文章IDEA安装deepseek最新教程2025中说明了怎么用idea安装codeGPT插件,并接入DeepSeek,无奈接入的官方api已经不能使用了,所以我们尝试从其他地方接入 阿里云百炼https://bailian.console.aliyun.com/ 阿里云百炼是阿…...
中级网络工程师面试题参考示例(1)
一、基础理论 1. OSI七层模型与TCP/IP四层模型的区别是什么?请举例说明第三层(网络层)和第四层(传输层)的核心协议。 参考答案: OSI七层模型分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用…...
主流大语言模型中Token的生成过程本质是串行的
主流大语言模型中Token的生成过程本质是串行的 flyfish 1. 串行生成 自回归模型的核心逻辑: 大模型(如GPT-2)采用自回归架构,每个Token的生成必须基于已生成的完整历史序列。例如,生成“今天天气很好”时:…...
3.03-3.09 Web3 游戏周报:Sunflower Land 周留存率 74.2%,谁是本周最稳链游?
回顾上周的区块链游戏概况,查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【3.03–3.09】Web3 游戏行业动态 Sui 背后开发公司 Mysten Labs 宣布收购游戏开发平台 ParasolYescoin 创始人因合伙人纠纷被警方带走,案件升级为刑事案件Animoca B…...
高级java每日一道面试题-2025年2月18日-数据库篇-MySQL 如何做到高可用方案?
如果有遗漏,评论区告诉我进行补充 面试官: MySQL 如何做到高可用方案? 我回答: 在Java高级面试中,讨论MySQL如何实现高可用性方案是一个重要话题。这不仅涉及到数据库的稳定性和可靠性,还关系到系统的整体性能和用户体验。以下是结合提供的信息进行综…...
【编程题】7-5 堆中的路径
7-5 堆中的路径 1 题目原文2 思路解析3 代码实现 1 题目原文 题目链接:7-5 堆中的路径 将一系列给定数字插入一个初始为空的最小堆 h h h。随后对任意给定的下标 i i i,打印从第 i i i 个结点到根结点的路径。 输入格式: 每组测试第 1 1 1 行包含 …...
Scala 中的访问修饰符
在Scala中,面向对象的权限控制主要通过访问修饰符来实现。Scala提供了以下几种访问修饰符来控制类、对象、成员变量和方法的访问权限: 1. 默认访问权限(无修饰符) 如果没有指定任何访问修饰符,成员默认是public的&…...
flask_restx 定义任意类型参数
之前定义的content只是string,现在需要支持即可以string也可以list from flask_restx import fieldsclass Messages:def get_model(api):return api.model("Message",{"role": fields.String(requiredTrue, description"The role of messa…...
Unity3D网格简化与LOD技术详解
前言 在Unity3D游戏开发中,网格简化(Mesh Simplification)和细节层次(Level of Detail, LOD)技术是优化渲染性能的关键手段,尤其在处理复杂场景和高精度模型时至关重要。这两种技术通过减少模型的几何复杂…...
爬取数据时如何处理可能出现的异常?
在爬取数据时,处理可能出现的异常是确保爬虫稳定运行的关键。以下是一些常见的异常处理策略和具体实现方法,这些方法可以帮助你在爬虫开发中更有效地应对各种问题。 1. 使用 try-catch 块捕获异常 在PHP中,try-catch 块是处理异常的基本工具…...
TCP/IP原理详细解析
前言 TCP/IP是一种面向连接,可靠的传输,传输数据大小无限制的。通常情况下,系统与系统之间的http连接需要三次握手和四次挥手,这个执行过程会产生等待时间。这方面在日常开发时需要注意一下。 TCP/IP 是互联网的核心协议族&…...
MPPT与PWM充电原理及区别详解
MPPT(最大功率点跟踪)和PWM(脉宽调制)是太阳能充电控制器中常用的两种技术,它们在原理、效率和适用场景上有显著区别。以下是两者的详细对比: 1. 工作原理 PWM(脉宽调制) 核心机制…...
数据量过大的时候导出数据很慢
原因解析 速度慢无非两个原因: sql取数很慢程序很慢 sql很慢有3种原因: sql本身查询不合理,需要优化数据库没有索引多次频繁访问数据,造成了不必要的开销 取消多次获取数据,一次获取 框定一个大致的范围,获取此次查询的所有数据使用map设置数据,没有主键使用傅和主键拼接数据 /…...
NVIDIA k8s-device-plugin源码分析与安装部署
在《kubernetes Device Plugin原理与源码分析》一文中,我们从源码层面了解了kubelet侧关于device plugin逻辑的实现逻辑,本文以nvidia管理GPU的开源github项目k8s-device-plugin为例,来看看设备插件侧的实现示例。 一、Kubernetes Device Pl…...
langChainv0.3学习笔记(初级篇)
LangChain自0.1版本发布以来,已经历了显著的进化,特别是向AI时代的适应性提升。在0.1版本中,LangChain主要聚焦于提供基本的链式操作和工具集成,帮助开发者构建简单的语言模型应用。该版本适用于处理简单任务,但在应对…...
聚焦两会:科技与发展并进,赛逸展2025成创新新舞台
在十四届全国人大三次会议和全国政协十四届三次会议期间,代表委员们围绕多个关键议题展开深入讨论,为国家未来发展谋篇布局。其中,技术竞争加剧与经济转型需求成为两会焦点,将在首都北京举办的2025第七届亚洲消费电子技术贸易展&a…...
Xilinx ZYNQ FSBL解读:LoadBootImage()
篇首 最近突发奇想,Xilinx 的集成开发环境已经很好了,很多必要的代码都直接生成了,这给开发者带来了巨大便利的同时,也让人错过了很多代码的精彩,可能有很多人用了很多年了,都还无法清楚的理解其中过程。博…...
flutter的HTTP headers用法介绍
flutter的HTTP headers用法介绍 在 Flutter 中,HTTP headers 是用于在发送 HTTP 请求时传递额外信息的关键部分。它们可以用于身份验证、缓存控制、内容类型声明等。以下是关于 Flutter 中 HTTP headers 的详细说明和用法。 1. 什么是 HTTP Headers? H…...
Flutter开发避坑指南:高频问题排查与性能调优实战
目录 一、使用中常见问题 1.环境与配置问题 2.Widget 重建与状态管理 3.布局与绘制问题 4.动画与卡顿(Jank)问题 5.平台相关问题 二、Flutter实战14问 1.如何使用 Flutter 进行多语言支持? 1. 添加依赖 2. 配置 Material App 3. 创…...
Uniapp实现地图获取定位功能
摘要:本文将手把手教你如何在Uniapp项目中集成地图功能、实现定位获取,并解决微信小程序、APP、H5三端的兼容性问题🚀🚀🚀 一、环境准备 地图平台选择 微信小程序:腾讯地图(强制使用)…...
Ubuntu 24.04 安装与配置 JetBrains Toolbox 指南
📌 1. JetBrains Toolbox 介绍 JetBrains Toolbox 是 JetBrains 开发的工具管理器,可用于安装、更新和管理 IntelliJ IDEA、PyCharm、WebStorm、CLion 等。本指南记录了 JetBrains Toolbox 在 Ubuntu 24.04 上的 安装、路径调整、权限管理 及 遇到的问题…...
【AI】神经网络|机器学习——图解Transformer(完整版)
Transformer是一种基于注意力机制的序列模型,最初由Google的研究团队提出并应用于机器翻译任务。与传统的循环神经网络(RNN)和卷积神经网络(CNN)不同,Transformer仅使用自注意力机制(self-attention)来处理输入序列和输出序列,因此可以并行计算,极大地提高了计算效率…...
【VUE2】第二期——生命周期及工程化
目录 1 生命周期 1.1 介绍 1.2 钩子 2 可视化图表库 3 脚手架Vue CLI 3.1 使用步骤 3.2 项目目录介绍 3.3 main.js入口文件代码介绍 4 组件化开发 4.1 组件 4.2 普通组件注册 4.2.1 局部注册 4.2.2 全局注册 1 生命周期 1.1 介绍 Vue生命周期:就是…...
贪心算法三
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…...
猫耳大型活动提效——组件低代码化
1. 引言 猫耳前端在开发活动的过程中,经历过传统的 pro code 阶段,即活动页面完全由前端开发编码实现,直到 2020 年接入公司内部的低代码活动平台,满足了大部分日常活动的需求,运营可自主配置活动并上线,释…...
机器学习 Day02,matplotlib库绘图
1.matplotlib图像结构 容器层:画板,画布,坐标系辅助层:刻度,标题,网格,图例等图像层:折线图(主讲),饼图,直方图,柱状图等…...
MySQL中有哪几种锁?
大家好,我是锋哥。今天分享关于【MySQL中有哪几种锁?】面试题。希望对大家有帮助; MySQL中有哪几种锁? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中,锁是用于确保数据的一致性和并发控制的机…...
Unity单例模式更新金币数据
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。在游戏开发中,单例模式非常适合用于管理全局唯一的数据,比如玩家的金币数量。通过使用单例…...
【javaEE】多线程(进阶)
1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...
