Forum rules - please read before posting.

set tag?

Hi Chris,

In AC, there is an actionlist can check tag of game object. But I can't find any actionlist can set tag of game object. Is it possible to do that in AC? Thanks a lot.

Comments

  • edited July 2023

    With a custom Action, yes:

    using UnityEngine;
    #if UNITY_EDITOR
    using UnityEditor;
    #endif
    using System.Collections.Generic;
    
    namespace AC
    {
    
        [System.Serializable]
        public class ActionTagSet : Action
        {
    
            public GameObject objectToSet;
            public int objectToSetConstantID;
            public int objectToSetParameterID = -1;
            protected GameObject runtimeObjectToSet;
    
            public string tagToSet;
            public int tagToSetParameterID = -1;
    
    
            public override ActionCategory Category { get { return ActionCategory.Object; }}
            public override string Title { get { return "Set tag"; }}
    
    
            public override void AssignValues (List<ActionParameter> parameters)
            {
                runtimeObjectToSet = AssignFile (parameters, objectToSetParameterID, objectToSetConstantID, objectToSet);
                tagToSet = AssignString (parameters, tagToSetParameterID, tagToSet);
            }
    
    
            public override float Run ()
            {
                if (runtimeObjectToSet != null && !string.IsNullOrEmpty (tagToSet))
                {
                    runtimeObjectToSet.tag = tagToSet;
                }
                return 0f;
            }
    
    
            #if UNITY_EDITOR
    
            public override void ShowGUI (List<ActionParameter> parameters)
            {
                objectToSetParameterID = Action.ChooseParameterGUI ("GameObject to set:", parameters, objectToSetParameterID, ParameterType.GameObject);
                if (objectToSetParameterID >= 0)
                {
                    objectToSetConstantID = 0;
                    objectToSet = null;
                }
                else
                {
                    objectToSet = (GameObject) EditorGUILayout.ObjectField ("GameObject to set:", objectToSet, typeof (GameObject), true);
    
                    objectToSetConstantID = FieldToID (objectToSet, objectToSetConstantID);
                    objectToSet = IDToField (objectToSet, objectToSetConstantID, false);
                }
    
                tagToSetParameterID = Action.ChooseParameterGUI ("New tag:", parameters, tagToSetParameterID, new ParameterType[2] { ParameterType.String, ParameterType.PopUp });
                if (tagToSetParameterID < 0)
                {
                    tagToSet = EditorGUILayout.TextField ("New tag:", tagToSet);
                }
                EditorGUILayout.HelpBox ("Multiple character names should be separated by a colon ';'", MessageType.Info);
            }
    
    
            public override void AssignConstantIDs (bool saveScriptsToo, bool fromAssetFile)
            {
                AssignConstantID (objectToSet, objectToSetConstantID, objectToSetParameterID);
            }
    
            #endif
    
        }
    
    }
    
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Welcome to the official forum for Adventure Creator.