zl程序教程

您现在的位置是:首页 >  工具

当前栏目

unity 笔记

笔记 Unity
2023-09-27 14:22:11 时间

今日笔记
用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
这是语法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述