Skip to content

Latest commit

 

History

History
80 lines (54 loc) · 1.95 KB

File metadata and controls

80 lines (54 loc) · 1.95 KB

The Tagging API

You can 'tag' actor and components.

A tag is a string (well, an FName internally) you assign to your actors and components. Each of them can have multiple tags.

Tagging Actors

The 'Tags' properties allows you to tag actors:

your_actor.Tags = ['foo', 'Bar', tEsT']

You can eventually fast-check an actor for the availability of a tag:

if your_actor.actor_has_tag('foo'):
    ue.log('Success')

Finding all actors with a tag is unfortuntaley a slow operation (in C++, Blueprint and obviously python):

import unreal_engine as ue

def find_all_actors_with_tag(world, tag):
    for actor in world.all_actors():
        if actor.actor_has_tag(tag):
            yield actor


world = ue.get_editor_world()

for actor in find_all_actors_with_tag(world, 'foo'):
    print(actor)

Eventually you can use the blueprint api:

import unreal_engine as ue
from unreal_engine.classes import GameplayStatics

world = ue.get_editor_world()

# blueprint ufunctions returns a tuple (as UFunctions can returns multiple values)
actors, = GameplayStatics.GetAllActorsWithTag(world, 'one')
for actor in actors:
    print(actor)

Tagging Components

You can tag components too using the property 'ComponentTags':

your_component.ComponentTags = ['one', 'two', 'three']

Fast-check of tag availability can be done with the component_has_tag() function:

if your_component.component_has_tag('one'):
    print('yes')

While you can get the list of actor's component tagged with the specific value:

component_list = your_actor.get_components_by_tag('two')

The function can take an optional argument specifying which classes of ActorComponent must be taken into account:

from unreal_engine.classes import SceneComponent
# search all the components children of the class SceneComponent and tagged with 'two'
component_list = your_actor.get_components_by_tag('two', SceneComponent)