ShaderVariantCollection 记录了每个着色器中实际使用的着色器变体。
这用于着色器预加载(“预热”),以便游戏可以确保在启动时(或关卡加载时)加载“实际需要的”着色器变体,以避免游戏后期出现与着色器编译相关的卡顿。
在 Unity 中,许多着色器在内部具有多个“变体”,以考虑不同的灯光模式、灯光贴图、阴影等。这些变体由着色器通道类型和一组着色器关键字标识。请参阅 ShaderVariant。
ShaderVariantCollection 的典型用法是记录编辑器(在图形设置下)在游戏会话期间使用的着色器变体,将其保存为资源,并将其添加到预加载的着色器列表中(同样在图形设置下)。此外,您可以在 ShaderVariantCollection 对象上手动调用 WarmUp。
ShaderVariantCollection 通常取代旧的 Shader.WarmupAllShaders 函数。
isWarmedUp | 此 ShaderVariantCollection 是否已预热?(只读) |
shaderCount | 此集合中的着色器数量(只读)。 |
variantCount | 此集合中的变体总数(只读)。 |
warmedUpVariantCount | 此集合中已预热的变体总数(只读)。 |
ShaderVariantCollection | 创建一个新的空着色器变体集合。 |
Add | 向集合中添加新的着色器变体。 |
Clear | 从集合中删除所有着色器变体。 |
Contains | 检查着色器变体是否在集合中。 |
Remove | 从集合中删除着色器变体。 |
WarmUp | 预热此着色器变体集合中的所有着色器变体。 |
WarmUpProgressively | 预热此着色器变体集合中的指定数量的着色器变体。 |
GetInstanceID | 获取对象的实例 ID。 |
ToString | 返回对象的名称。 |
Destroy | 删除游戏对象、组件或资源。 |
DestroyImmediate | 立即销毁对象 obj。强烈建议使用 Destroy 代替。 |
DontDestroyOnLoad | 加载新场景时不要销毁目标对象。 |
FindAnyObjectByType | 检索类型为 type 的任何活动加载的对象。 |
FindFirstObjectByType | 检索类型为 type 的第一个活动加载的对象。 |
FindObjectsByType | 检索类型为 type 的所有加载对象的列表。 |
Instantiate | 克隆原始对象并返回克隆。 |
InstantiateAsync | 捕获原始对象的快照(必须与某个游戏对象相关),并返回 AsyncInstantiateOperation。 |
bool | 对象是否存在? |
operator != | 比较两个对象是否引用不同的对象。 |
operator == | 比较两个对象引用,以查看它们是否引用同一个对象。 |