Advertisement
Pro_Unit

AnimatorDataGenerationWizard

Jan 30th, 2021
1,091
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.58 KB | None | 0 0
  1. using System.Linq;
  2.  
  3. using UnityEditor;
  4. using UnityEditor.Animations;
  5.  
  6. using UnityEngine;
  7. public class AnimatorDataGenerationWizard : ScriptableWizard
  8. {
  9.     [SerializeField] private AnimatorController _animatorController;
  10.     [SerializeField] private string  _statesFolder = "Assets/Resources/Data/AnimatorStates";
  11.     [SerializeField] private string  _parametersFolder = "Assets/Resources/Data/AnimatorParameters";
  12.    
  13.    
  14.     [MenuItem("Tools/Wizards/AnimatorDataGeneration")]
  15.     static void CreateWizard()
  16.     {
  17.         DisplayWizard<AnimatorDataGenerationWizard>("Animator Data Generation", "Create Sates", "Crate Parameters");
  18.     }
  19.    
  20.     private void OnWizardCreate()
  21.     {
  22.         var states = _animatorController.layers.SelectMany(layer => layer.stateMachine.states);
  23.        
  24.         foreach (ChildAnimatorState state in states)
  25.         {
  26.             var animatorHash =  CreateInstance<AnimatorHash>();
  27.             animatorHash.SetHash(state.state.nameHash);
  28.             AssetDatabase.CreateAsset(animatorHash,$"{_statesFolder}/{state.state.name}.asset");
  29.         }
  30.         AssetDatabase.SaveAssets();
  31.        
  32.     }
  33.  
  34.     private void OnWizardOtherButton()
  35.     {
  36.         var parameters = _animatorController.parameters;
  37.        
  38.         foreach (var parameter in parameters)
  39.         {
  40.             var animatorHash = CreateInstance<AnimatorHash>();
  41.             animatorHash.SetHash(parameter.nameHash);
  42.             AssetDatabase.CreateAsset(animatorHash,$"{_parametersFolder}/{parameter.name}.asset");
  43.         }
  44.         AssetDatabase.SaveAssets();
  45.     }
  46. }
  47.  
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement