unity 笔记
今日笔记
用FrameDebug看渲染
https://docs.unity3d.com/cn/2021.1/Manual/FrameDebugger.html
Edit > Project Settings > Graphics 管线设置
SRP (Scriptable Render Pipeline) 可编程渲染管线
URP (Universal Render Pipeline) 通用渲染管线 旧版本叫 Lightweight Render Pipeline (LWRP) 是由 Unity 制作的预构建可编程渲染管线 (Scriptable Render Pipeline)。
URP的官方使用文档
http://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/manual/index.html#top
URP 和 HDRP 建立在 SRP 之上。还可以在 SRP 之上创建自己的自定义渲染管线。
HDRP 官方使用文档
http://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@12.0/manual/index.html
SRP
渲染管线实例,它是继承自 RenderPipeline 的类。它的 Render 方法是 SRP 的主要入口点。
Active
可以使用 GameObject.activeSelf 读取当前活动状态。
还使用 GameObject.activeInHierarchy 读取 GameObject 是否在场景中实际处于活动状态。GameObject 是否实际处于活动状态取决于其自身的活动状态,以及其所有父项的活动状态。如果其所有父项都不处于活动状态,则尽管它自己设置为活动状态,它也不会处于活动状态。
添加组件
使用 GameObjectUtility.SetStaticEditorFlags 控制哪些 Unity 系统将 GameObject 视为静态。
在运行时添加组件的最佳方法是使用 AddComponent(在显示的尖括号中指定组件类型)。
若要移除组件,必须对组件本身使用 Object.Destroy 方法。
访问组件
最简单的情况是 GameObject 上的脚本需要访问附加到同一个 GameObject 的另一个组件(请记住,附加到 GameObject 的其他脚本本身也是组件)。为此,第一步是获取对要使用的组件实例的引用。这通过 GetComponent 方法来完成。通常要将组件对象分配给变量,而此操作使用以下代码实现。在此示例中,脚本获取对同一个 GameObject 上的 Rigidbody 组件的引用:
Rigidbody rb = GetComponent();
可以将多个自定义脚本附加到同一个 GameObject。如果需要从一个脚本访问另一个脚本,可以像往常一样使用 GetComponent,只需使用脚本类的名称(或文件名)来指定所需的组件类型。
Unity 支持以下类型的约束组件:
Aim:旋转受约束的游戏对象以朝向关联的游戏对象。
Look At:将受约束的游戏对象旋转到关联的游戏对象(简化的 Aim Constraint)。
Parent:使受约束的游戏对象跟随关联的游戏对象移动和旋转。
Position:像关联的游戏对象一样移动受约束的游戏对象。
Rotation:像关联的游戏对象一样旋转受约束的游戏对象。
Scale:像关联的游戏对象一样缩放受约束的游戏对象。
FixedUpdate:调用 FixedUpdate 的频度常常超过 Update。如果帧率很低,可以每帧调用该函数多次;如果帧率很高,可能在帧之间完全不调用该函数。在 FixedUpdate 之后将立即进行所有物理计算和更新。在 FixedUpdate 内应用运动计算时,无需将值乘以 Time.deltaTime。这是因为 FixedUpdate 的调用基于可靠的计时器(独立于帧率)。
Update:每帧调用一次 Update。这是用于帧更新的主要函数。
LateUpdate:每帧调用一次 LateUpdate__(在 Update__ 完成后)。LateUpdate 开始时,在 Update 中执行的所有计算便已完成。LateUpdate 的常见用途是跟随第三人称摄像机。如果在 Update 内让角色移动和转向,可以在 LateUpdate 中执行所有摄像机移动和旋转计算。这样可以确保角色在摄像机跟踪其位置之前已完全移动。
物理引擎也采用与帧渲染类似的方式以离散时间步骤进行更新。在每次物理更新之前都会调用一个称为 FixedUpdate 的单独事件函数。由于物理更新和帧更新不会以相同频率进行,所以如果将物理代码放在 FixedUpdate 函数而不是 Update 中,此代码将产生更准确的结果。
GameObject:表示可以存在于场景中的对象的类型。
MonoBehaviour:基类,默认情况下,所有 Unity 脚本都派生自该类。
Object:Unity 可以在编辑器中引用的所有对象的基类。
Transform:提供多种方式来通过脚本处理游戏对象的位置、旋转和缩放,以及与父和子游戏对象的层级关系。
Vectors:用于表达和操作 2D、3D 和 4D 点、线和方向的类。
Quaternion:表示绝对或相对旋转的类,并提供创建和操作它们的方法。
ScriptableObject:可用于保存大量数据的数据容器。
Time(以及帧率管理):Time 类用于测量和控制时间,并管理项目的帧率。
Mathf:一组常见的数学函数,包括三角函数、对数函数以及游戏和应用开发中常用的其他函数。
Random:提供简便的方法来生成各种常用类型的随机值。
Debug:用于可视化编辑器中的信息,这些信息可以帮助您了解或调查项目运行时发生的情况。
Gizmos 和 Handles:用于在 Scene 视图和 Game 视图绘制线条和形状以及交互式手柄和控件。
一个标准的shader结构
Shader "Examples/ShaderSyntax"
{
CustomEditor = "ExampleCustomEditor"
Properties
{
// Material property declarations go here
}
SubShader
{
// The code that defines the rest of the SubShader goes here
Pass
{
// The code that defines the Pass goes here
}
}
Fallback "ExampleFallbackShader"
}
Properties标签可以用的内容:
Fallback
着色器在属性块中声明材质属性。如果要访问着色器程序中的某些属性,则需要声明具有相同名称和匹配类型的Cg/HLSL变量。
unity 开始使用hlsl了
https://docs.microsoft.com/zh-cn/windows/win32/direct3dhlsl/dx-graphics-hlsl
这是学习文档地址。
https://docs.microsoft.com/zh-cn/windows/win32/direct3dhlsl/dx-graphics-hlsl-flow-control
这是语法。
相关文章
- 【学习笔记43】JavaScript的事件
- 机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]
- 机器学习笔记之高斯混合模型(四)EM算法求解高斯混合模型(M步操作)
- 概率 | 【提神醒脑】自用笔记串联二 —— 数字特征、大数定律、统计量
- Modbus库开发笔记:Modbus ASCII Slave开发
- charles学习笔记
- Andrew Ng-机器学习基础笔记(下)-Python实现代码
- 神经网络与深度学习笔记(三):逻辑回归的损失函数
- 运维笔记:inotify+rsync实现实时监控备份
- 【Unity笔记】提示框ToolTips大小自适应,及其闪烁的问题
- 【Unity笔记】鼠标射线由指定层接收
- 【Unity笔记】UGUI物体的渲染顺序
- 【Unity笔记】常用插件
- 《YOLO9000: Better, Faster, Stronger》论文笔记
- Unity笔记-29-ARPG游戏项目-12-完善弓箭
- Unity笔记-17-01-带物理引擎的人物控制器
- Unity笔记-06
- Unity笔记-29-ARPG游戏项目-11-完善运动
- Unity笔记-15-2048小游戏
- Unity笔记-34-FSM(有限状态机)