Unity八股总结

这里写目录标题

    • OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?
    • 动态加载资源的方式?
    • Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。
    • 物理更新一般放在哪个系统函数里?
    • 请简述如何在不同分辨率下保持UI的一致性
    • 简述四元数的作用,四元数对欧拉⻆的优点?
    • 画布的三种模式.缩放模式
    • 异步加载
    • shader基础
    • 协程

OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?

答:Awake–>OnEnable->Start

OnEnable在同一周期中可以反复地发生!

动态加载资源的方式?

instantiate:最简单的一种方式,以实例化的方式动态生成一个物体。
Assetsbundle:即将资源打成 asset bundle 放在服务器或本地磁盘,然后使用WWW模块get 下来,然后从这个bundle中load某个object,unity官方推荐也是绝大多数商业化项目使用的一种方式。
Resource.Load:可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不管有没有场景引用,都会将其全部打入到安装包中
AssetDatabase.loadasset :这种方式只在editor范围内有效,游戏运行时没有这个函数,它通常是在开发中调试用的。

Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。

Unity生命周期
答:Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>OnDisable——>OnDestroy
主要执行顺序
编辑器->初始化->物理系统->输入事件->游戏逻辑->场景渲染->GUI渲染->物体激活或禁用->销毁物体->应用结束

主要函数介绍

  • Reset 是在用户点击检视面板的Reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用。Reset最常用于在检视面板中给定一个最常用的默认值。
  • Awake 用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如 GameObject.FindWithTag 这样的函数搜索它们。每个游戏物体上的Awke以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息 ,Awake总是在Start之前被调用。它不能用来执行协同程序。
  • OnDisable 不能用于协同程序。当对象变为不可用或非激活状态时此函数被调用。
  • Start 在behaviour的生命周期中只被调用一次。它和Awake的不同是Start只在脚本实例被启用时调用。你可以按需调整延迟初始化代码。Awake总是在Start之前执行。这允许你协调初始化顺序。
  • FixedUpdate 当MonoBehaviour启用时,其在每一帧被调用。处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)。
  • OnTriggerEnter 可以被用作协同程序,在函数中调用yield语句。当Collider(碰撞体)进入trigger(触发器)时调用OnTriggerEnter。
  • OnCollisionEnter 相对于OnTriggerEnter,传递的是Collision类而不是Collider。Collision包含接触点,碰撞速度等细节。如果在函数中不使用碰撞信息,省略collisionInfo参数以避免不必要的运算。注意如果碰撞体附加了一个非动力学刚体,只发送碰撞事件。可以被用作协同程序。
    当鼠标在GUIElement(GUI元素)或Collider(碰撞体)上点击时调用OnMouseDown。
  • Update 是实现各种游戏行为最常用的函数。
  • yield 一个协同程序在执行过程中,可以在任意位置使用yield语句。yield的返回值控制何时恢复协同程序向下执行。协同程序在对象自有帧执行过程中堪称优秀。协同程序在性能上没有更多的开销。StartCoroutine函数是立刻返回的,但是yield可以延迟结果。直到协同程序执行完毕。
  • LateUpdate 是在所有Update函数调用后被调用。这可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。
  • 渲染和处理GUI事件时调用。这意味着你的OnGUI程序将会在每一帧被调用。要得到更多的GUI事件的信息查阅Event手册。如果Monobehaviour的enabled属性设为false,OnGUI()将不会被调用。
  • OnApplicationQuit,当用户停止运行模式时在编辑器中调用。当web被关闭时在网络播放器中被调用。

物理更新一般放在哪个系统函数里?

FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。

FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。 Update就比较适合做控制。

请简述如何在不同分辨率下保持UI的一致性

多屏幕分辨率下的UI布局一般考虑两个问题:

布局元素的位置,即屏幕分辨率变化的情况下,布局元素的位置可能固定不动,导致布局元素可能超出边界;
布局元素的尺寸,即在屏幕分辨率变化的情况下,布局元素的大小尺寸可能会固定不变,导致布局元素之间出现重叠等功能。
为了解决这两个问题,在Unity GUI体系中有两个组件可以来解决问题,分别是布局元素的Rect Transform和Canvas的Canvas Scaler组件。

简述四元数的作用,四元数对欧拉⻆的优点?

四元数⽤于表示旋转,对旋转⻆度进⾏计算时⽤到四元数
相对欧拉⻆的优点:
1)能进⾏增量旋转
2)避免万向锁
3)给定⽅位的表达⽅式有两种,互为负(欧拉⻆有⽆数种表达⽅式)

画布的三种模式.缩放模式

屏幕空间-覆盖模式(Screen Space-Overlay),Canvas创建出来后,默认就是该模式,该模式和摄像机无关,即使场景内没有摄像机,UI游戏物体照样渲染

  • 屏幕空间:电脑或者手机显示屏的2D空间,只有x轴和y轴
  • 覆盖模式:UI元素永远在3D元素的前面

屏幕空间-摄像机模式(Screen Space-Camera),设置成该模式后需要指定一个摄像机游戏物体,指定后UGUI就会自动出现在该摄像机的“投射范围”内,和NGUI的默认UI Root效果一致,如果隐藏掉摄像机,UGUI当然就无法渲染
世界空间模式(WorldSpace),设置成该模式后UGUI就相当于是场景内的一个普通的“Cube 游戏模型”,可以在场景内任意的移动UGUI元素的位置,通常用于怪物血条显示和VR开发
在这里插入图片描述

Constant Pixel Size、Constant Physical Size实际上他们本质是一样的,只不过 Constant Pixel Size 通过逻辑像素大小调节来维持缩放,而 Constant Physical Size 通过物理大小调节来维持缩放。

异步加载

异步加载是在 Unity 中用于优化游戏性能的一种技术,主要目的是在不阻塞主线程的情况下加载资源。它允许游戏在后台进行资源加载,以保证用户界面的流畅性。

使用场景:常见于场景切换、资源加载(如音频、纹理、模型等)。
实现方式:
使用 AsyncOperation 类,如 SceneManager.LoadSceneAsync() 来异步加载场景。
对于其他资源,可以使用 Resources.LoadAsync() 或 Addressables 系统,通过异步方式加载资源。

shader基础

Shader 是一种程序,用来描述物体表面的外观,影响光照与渲染效果。在 Unity 中,Shader 主要分为两类:Surface Shaders 和 Vertex/Fragment Shaders。

  • Surface Shaders:简化了光照计算,适合常规材料的定义。开发者只需定义一些属性(如颜色、纹理等),Unity 会自动处理光照。

  • Vertex/Fragment Shaders:提供更精细的控制,允许开发者自定义顶点和片段处理,适合复杂的视觉效果。

协程

Unity 协程(Coroutine)到底是什么?

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

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

相关文章

征程 6E/M 快速上手实战 Sample-Camera

01 Camera 模块简述 本文档简单介绍 Camera 子系统软件架构、列出已支持的 Camera 模组,并提供相应的配置说明,同时引用 Sensor 点亮调试方法介绍一颗新模组接入的步骤,再按根据重要功能按专题介绍接入方案限制、EMB 接收等,并最…

Python :AVIF 图片与其他图片格式间的批量转换

图片格式 AVIF转换为常见的格式,比如 JPG 或 PNG。本文介绍如何使用 Pillow 库实现AVIF与其他格式的相互转换。 环境配置 使用 Python 环境管理工具 conda 和常用库 Pillow 来处理图片格式转换。环境的详细信息: Conda: 24.7.1Python: 3.8.19Pillow: 10…

【中级通信工程师】终端与业务(十):通信市场营销组合策略

【零基础3天通关中级通信工程师】 终端与业务(十):通信市场营销组合策略 本文是中级通信工程师考试《终端与业务》科目第十章《通信市场营销组合策略》的复习资料和真题汇总。本章的核心内容涵盖了市场营销组合策略的特点、产品策略、价格策略、渠道策略和促销策略…

【中级通信工程师】终端与业务(十一):市场营销计划、实施与控制

【零基础3天通关中级通信工程师】 终端与业务(十一):市场营销计划、实施与控制 本文是中级通信工程师考试《终端与业务》科目第十一章《市场营销计划、实施与控制》的复习资料和真题汇总。本章的核心内容涵盖了市场营销计划的编制、实施过程以及控制方式&#xff0…

“牛市“是要来了吗?股市热潮“挤爆“上交所,系统也懵了!

今天,这股市的火爆程度简直了!A股牛气冲天,直接把上交所的交易系统都给“挤爆”了,9月27号上午,网上炸开了锅,说上交所的交易系统居然卡壳了,买卖股票都成了难题,撤单也撤不掉。 网友…

周销量超BBA,稳居新势力榜首,理想汽车企稳发展新阶段

撰稿 | 多客 来源 | 贝多财经 理想汽车,离自己的理想又进了一步。 根据最新公布的2024年第38周(9月16日至22日)的中国汽车市场数据,理想汽车(NASDAQ:LI、HK:02015)的周销量继续领跑新势力品牌&#xff0…

每日论文6—16ISCAS一种新型低电流失配和变化电流转向电荷泵

《A Novel Current Steering Charge Pump with Low Current Mismatch and Variation》16ISCAS 本文首先介绍了传统的current steering charge pump,如下图: 比起最简单的电荷泵,主要好处是UP和DN开关离输出节点较远,因此一定程度…

【Java异常】(简简单单拿捏)

【Java异常】(简简单单拿捏) 1. 异常的简单介绍2. 异常的抛出2.1 语法 3. 异常的处理3.1 异常声明throws3.2 try-catch捕获并处理 4. 例子(try-catch自定义异常) 1. 异常的简单介绍 程序员在运行代码时会遇到很多异常&#xff0c…

T8:猫狗识别

T8周:猫狗识别 **一、前期工作**1.设置GPU,导入库2.导入数据3.查看数据 **二、数据预处理**1.加载数据2.可视化数据3.配置数据集 **三、构建CNN网络模型****四、编译模型****五、训练模型****六、模型评估****七、预测**八、总结1、[train_on_batch 和 test_on_batc…

ICAS英格尔认证闪耀2024汽车供应链降碳峰会,引领行业绿色发展新潮流

在推动全球绿色发展的大潮中,汽车供应链的降碳和可持续发展成为了行业内的热点议题。在这个关键时刻,《2024中国汽车供应链降碳和可持续国际峰会》在上海隆重举行,吸引了众多行业领袖和专家的目光。作为认证领域的佼佼者,ICAS英格…

THREE.JS法线Shader

以普通情况而论 vNormal normal;//...gl_FragColor vec4( vNormal, 1. );vNormal normal;//...gl_FragColor vec4( normalize( vNormal ) * 0.5 0.5, 1. );vNormal normalMatrix * normal;//...gl_FragColor vec4( normalize( vNormal ) * 0.5 0.5, 1. );normalMa…

从 0 到 1:互联网产品经理核心技能全解析

在互联网的浩瀚海洋中,产品经理如同领航员,决定着产品从无到有的走向和命运。从 0 到 1 打造一款互联网产品,需要产品经理具备多方面的核心技能。今天,我们就来详细解读这些关键能力。 一、洞察市场趋势 时刻关注行业动态 互联网…

征程6 上基于 DEB 工具实现包管理

1.引言 在开发、调测过程中,开发人员需要将系统软件、应用软件部署到 Soc 板端,以用于运行调试。传统的部署方式是通过解压复制或者调用部署脚本。这样的部署方式需要有着方式不统一、维护投入大的缺点。 在 linux 系统上,大多采用包管理的…

前端学习笔记-JS进阶篇-01

作用域&解构&箭头函数 1、作用域 作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问 1.1、局部作用域 局部作用域分为函数作用域和块作用域 1.1.1、函数作用域 在函数内部声明的变量只能在函数…

PSO粒子群代码手搓实现—代码详解版python

PSO粒子群算法手搓实现版🚀 读了博士之后,送算法方向转到了控制方向,然后最近接触到的项目,要用到粒子群算法,然后秉持着我自己一贯的把基础代码自己手写一遍的原则,我自己上网找了一些视频,然后…

大型模型智能体:最先进的合作范式、安全与隐私以及未来趋势

摘要—大型模型智能体(LM agents),由如 GPT-4 和 DALL-E 2 等大型基础模型驱动,代表了实现人工通用智能(AGI)的重要一步。LM 智能体展示了自主性、具身性和连接性等关键特征,使其能够在物理、虚…

大豆重测序-文献精读53

Natural variation in GmSW17 controls seed size in soybean GmSW17的自然变异控制大豆种子的大小 摘要 种子大小/重量在决定作物产量中起着重要作用,但在大豆中,仅有少数控制种子大小的基因被鉴定出来。在本研究中,我们进行了全基因组关联…

人工智能中的RAG、Agent与Agentic RAG各有什么作用?

人工智能技术的迅猛发展正催生着各行业的变革与创新浪潮。在此背景下,检索增强生成(RAG)、人工智能代理(Agent),以及两者结合形成的新理念Agentic RAG成为了关注的热点。本文将详细探讨这三项技术的概念、原…

产销皆下行,造势口碑遭“反噬”,魏建军能否重振长城汽车?

今年以来,长城汽车可谓多次被打在舆论聚光灯下,既有“一把手”魏建军一反此前低调务实作风而在今年多次于公共场合慨慷激昂频出“金句”宏观层面的;也有旗下多款车型销量数据出现下滑的微观层面。 近日,长城汽车披露了2024年1-8月…

AI产品经理必知:核心人工智能技术概览

第一章:AI产品经理是否需要懂技术及其程度 在当今AI行业快速发展的背景下,作为一位AI产品经理,理解并掌握一定的AI技术知识不仅是锦上添花,更是不可或缺的素质。那么,AI产品经理究竟需要懂到何种程度的技术呢&#xf…