Unity 基础知识总结(持续更新中...)

news2025/3/12 1:23:35

引擎基础

Unity有哪几个主要窗口?

Scene窗口

用于场景搭建和UI界面拼接

Game窗口

游戏运行预览

Hierarchy窗口

查看和调整场景对象层级结构

Project窗口

游戏工程资源

Inspector创建

属性查看器,属性设置、脚本组件挂载

Unity提供了几种光源,分别是什么

一共有四种

  1. Directional Light 平行光
  2. Point Light 点光源
  3.  Spot Light 聚光灯
  4. 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画布的渲染模式

  1. Screen Space-Overlay:所有UI元素都渲染在场景中的最上层
  2. Screen Space-Camera:画布放置在指定摄像机前面的给定距离处。场景中的物体可以显示在UI前面
  3. 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 :世界坐标系中的位置

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA接入阿里云百炼中免费的通义千问[2025版]

安装deepseek 上一篇文章IDEA安装deepseek最新教程2025中说明了怎么用idea安装codeGPT插件&#xff0c;并接入DeepSeek&#xff0c;无奈接入的官方api已经不能使用了&#xff0c;所以我们尝试从其他地方接入 阿里云百炼https://bailian.console.aliyun.com/ 阿里云百炼‌是阿…

3.03-3.09 Web3 游戏周报:Sunflower Land 周留存率 74.2%,谁是本周最稳链游?

回顾上周的区块链游戏概况&#xff0c;查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【3.03–3.09】Web3 游戏行业动态 Sui 背后开发公司 Mysten Labs 宣布收购游戏开发平台 ParasolYescoin 创始人因合伙人纠纷被警方带走&#xff0c;案件升级为刑事案件Animoca B…

NVIDIA k8s-device-plugin源码分析与安装部署

在《kubernetes Device Plugin原理与源码分析》一文中&#xff0c;我们从源码层面了解了kubelet侧关于device plugin逻辑的实现逻辑&#xff0c;本文以nvidia管理GPU的开源github项目k8s-device-plugin为例&#xff0c;来看看设备插件侧的实现示例。 一、Kubernetes Device Pl…

langChainv0.3学习笔记(初级篇)

LangChain自0.1版本发布以来&#xff0c;已经历了显著的进化&#xff0c;特别是向AI时代的适应性提升。在0.1版本中&#xff0c;LangChain主要聚焦于提供基本的链式操作和工具集成&#xff0c;帮助开发者构建简单的语言模型应用。该版本适用于处理简单任务&#xff0c;但在应对…

聚焦两会:科技与发展并进,赛逸展2025成创新新舞台

在十四届全国人大三次会议和全国政协十四届三次会议期间&#xff0c;代表委员们围绕多个关键议题展开深入讨论&#xff0c;为国家未来发展谋篇布局。其中&#xff0c;技术竞争加剧与经济转型需求成为两会焦点&#xff0c;将在首都北京举办的2025第七届亚洲消费电子技术贸易展&a…

Ubuntu 24.04 安装与配置 JetBrains Toolbox 指南

&#x1f4cc; 1. JetBrains Toolbox 介绍 JetBrains Toolbox 是 JetBrains 开发的工具管理器&#xff0c;可用于安装、更新和管理 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生命周期&#xff1a;就是…

贪心算法三

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是贪心算法&#xff0c;并且掌握贪心算法。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! >…

猫耳大型活动提效——组件低代码化

1. 引言 猫耳前端在开发活动的过程中&#xff0c;经历过传统的 pro code 阶段&#xff0c;即活动页面完全由前端开发编码实现&#xff0c;直到 2020 年接入公司内部的低代码活动平台&#xff0c;满足了大部分日常活动的需求&#xff0c;运营可自主配置活动并上线&#xff0c;释…

机器学习 Day02,matplotlib库绘图

1.matplotlib图像结构 容器层&#xff1a;画板&#xff0c;画布&#xff0c;坐标系辅助层&#xff1a;刻度&#xff0c;标题&#xff0c;网格&#xff0c;图例等图像层&#xff1a;折线图&#xff08;主讲&#xff09;&#xff0c;饼图&#xff0c;直方图&#xff0c;柱状图等…

MySQL中有哪几种锁?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL中有哪几种锁&#xff1f;】面试题。希望对大家有帮助&#xff1b; MySQL中有哪几种锁&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中&#xff0c;锁是用于确保数据的一致性和并发控制的机…

Unity单例模式更新金币数据

单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。在游戏开发中&#xff0c;单例模式非常适合用于管理全局唯一的数据&#xff0c;比如玩家的金币数量。通过使用单例…

【javaEE】多线程(进阶)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

Vue3实战学习(Element-Plus常用组件的使用(输入框、下拉框、单选框多选框、el-image图片))(上)(5)

目录 一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下) 二、Element-Plus常用组件使用。 &#xff08;1&#xff09;el-input。(input输入框) <1>正常状态的el-input。 <2>el-input的disable状态。 <3…

C++ 链表List使用与实现:拷贝交换与高效迭代器细致讲解

目录 list的使用&#xff1a; 构造与赋值 元素访问 修改操作 容量查询 链表特有操作 拼接&#xff08;Splice&#xff09; C11 新增方法 注意&#xff1a; stl_list的模拟实现&#xff1a; 一、链表节点设计的艺术 1.1 结构体 vs 类的选择 二、迭代器实现的精髓 2…

知乎后台管理系统:数据库系统原理实验1——数据库基础概念

实验背景 通过练习绘制语义网络&#xff0c;加深对于基本概念之间关系的理解和掌握。掌握在VISIO中绘制能准确表达基本概念之间关系的语义网络的技能。了解并比较数据模型的Chen’s表示法和UML表示法。理解关系模型设计中的完整性约束的重要性。掌握在Linux操作系统下远程访问…

docker compose 以redis为例

常见docker compose 命令 》》注意这个是旧版本的&#xff0c;新版本 docker 与compose 之间没有 - 新版本的 docker compose 把 version 取消了 &#xff0c;redis 默认是没有配置文件的 &#xff0c;nginx&#xff0c;mysql 默认是有的 services:redis:image: redis:lat…

ES C++客户端安装及使用

1. ES 介绍 Elasticsearch &#xff0c; 简称 ES &#xff0c;它是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff0c;零配 置&#xff0c;自动发现&#xff0c;索引自动分片&#xff0c;索引副本机制&#xff0c; restful 风格接口&#xff0c;多…

【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…