Files
UnrealEngine/Engine/Plugins/Enterprise/VariantManager/Extras/PythonAPI/test_dependencies.py
2025-05-18 13:04:45 +08:00

77 lines
2.3 KiB
Python

# This script shows how to setup dependencies between variants when using the Variant Manager Python API
import unreal
lvs = unreal.VariantManagerLibrary.create_level_variant_sets_asset("LVS", "/Game/")
if lvs is None:
print ("Failed to spawn either the LevelVariantSets asset or the LevelVariantSetsActor!")
quit()
var_set_colors = unreal.VariantSet()
var_set_colors.set_display_text("Colors")
var_set_letters = unreal.VariantSet()
var_set_letters.set_display_text("Letters")
var_set_fruits = unreal.VariantSet()
var_set_fruits.set_display_text("Fruits")
var_red = unreal.Variant()
var_red.set_display_text("Red")
var_green = unreal.Variant()
var_green.set_display_text("Green")
var_blue = unreal.Variant()
var_blue.set_display_text("Blue")
var_a = unreal.Variant()
var_a.set_display_text("A")
var_b = unreal.Variant()
var_b.set_display_text("B")
var_apple = unreal.Variant()
var_apple.set_display_text("Apple")
var_orange = unreal.Variant()
var_orange.set_display_text("Orange")
# Adds the objects to the correct parents
lvs.add_variant_set(var_set_colors)
lvs.add_variant_set(var_set_letters)
lvs.add_variant_set(var_set_fruits)
var_set_colors.add_variant(var_red)
var_set_colors.add_variant(var_green)
var_set_colors.add_variant(var_blue)
var_set_letters.add_variant(var_a)
var_set_letters.add_variant(var_b)
var_set_fruits.add_variant(var_apple)
var_set_fruits.add_variant(var_orange)
# Let's make variant 'Red' also switch on variant 'A' before it is switched on
dep1 = unreal.VariantDependency()
dep1.set_editor_property('VariantSet', var_set_letters)
dep1.set_editor_property('Variant', var_a)
dep1_index = var_red.add_dependency(dep1)
# Let's also make variant 'A' also switch on variant 'Orange' before it is switched on
dep2 = unreal.VariantDependency()
dep2.set_editor_property('VariantSet', var_set_fruits)
dep2.set_editor_property('Variant', var_orange)
var_a.add_dependency(dep2)
# Because dependencies trigger first, this will switch on 'Orange', then 'A' and finally 'Red'
var_red.switch_on()
# Let's disable the first dependency
# Note we need to set the struct back into the variant, as it's returned by value
dep1.set_editor_property('bEnabled', False)
var_red.set_dependency(dep1_index[0], dep1)
# Now this will only trigger 'Red', because dep1 is disabled and doesn't propagate to variant 'A'
var_red.switch_on ( )