<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "USDKit",
  "identifier" : "/documentation/USDKit/USDPrim/VariantSet",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "USDKit"
    ],
    "preciseIdentifier" : "s:6USDKit7USDPrimV10VariantSetV"
  },
  "title" : "USDPrim.VariantSet"
}
-->

# USDPrim.VariantSet

Represents a single variant set on a prim.

```
struct VariantSet
```

## Overview

`USDPrim.VariantSet` provides methods to add variants, query available variants,
and control which variant is currently selected. Each variant set contains
named variants that represent different configurations of the prim’s data.

## Topics

### Instance Properties

[`var authoredSelection: String?`](/documentation/USDKit/USDPrim/VariantSet/authoredSelection)

The authored variant selection, or `nil` if none is authored.

[`var isValid: Bool`](/documentation/USDKit/USDPrim/VariantSet/isValid)

A Boolean value indicating whether this variant set is valid.

[`var name: String`](/documentation/USDKit/USDPrim/VariantSet/name)

The name of this variant set.

[`var prim: USDPrim`](/documentation/USDKit/USDPrim/VariantSet/prim)

The prim that owns this variant set.

[`var selection: String?`](/documentation/USDKit/USDPrim/VariantSet/selection)

The currently selected variant name, or `nil` if no selection composes.

[`var variantNames: [String]`](/documentation/USDKit/USDPrim/VariantSet/variantNames)

The names of all variants in this variant set.

### Instance Methods

[`func add(String) throws`](/documentation/USDKit/USDPrim/VariantSet/add(_:))

Adds a new variant to this variant set.

[`func blockSelection() throws`](/documentation/USDKit/USDPrim/VariantSet/blockSelection())

Blocks the variant selection by authoring an explicit empty value
on the current edit target.

[`func clearSelection() throws`](/documentation/USDKit/USDPrim/VariantSet/clearSelection())

Clears the variant selection.

[`func setSelection(String) throws`](/documentation/USDKit/USDPrim/VariantSet/setSelection(_:))

Sets the variant selection.

[`func withEditTarget<R>(layer: USDLayer?, (USDStage.EditTarget) throws -> R) rethrows -> R`](/documentation/USDKit/USDPrim/VariantSet/withEditTarget(layer:_:))

Performs the closure with the stage’s edit target set to author
into the currently selected variant.

## Relationships

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

[`Hashable`](/documentation/Swift/Hashable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)