Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Linq;
- using UnityEditor;
- using UnityEditor.Animations;
- using UnityEngine;
- public class AnimatorDataGenerationWizard : ScriptableWizard
- {
- [SerializeField] private AnimatorController _animatorController;
- [SerializeField] private string _statesFolder = "Assets/Resources/Data/AnimatorStates";
- [SerializeField] private string _parametersFolder = "Assets/Resources/Data/AnimatorParameters";
- [MenuItem("Tools/Wizards/AnimatorDataGeneration")]
- static void CreateWizard()
- {
- DisplayWizard<AnimatorDataGenerationWizard>("Animator Data Generation", "Create Sates", "Crate Parameters");
- }
- private void OnWizardCreate()
- {
- var states = _animatorController.layers.SelectMany(layer => layer.stateMachine.states);
- foreach (ChildAnimatorState state in states)
- {
- var animatorHash = CreateInstance<AnimatorHash>();
- animatorHash.SetHash(state.state.nameHash);
- AssetDatabase.CreateAsset(animatorHash,$"{_statesFolder}/{state.state.name}.asset");
- }
- AssetDatabase.SaveAssets();
- }
- private void OnWizardOtherButton()
- {
- var parameters = _animatorController.parameters;
- foreach (var parameter in parameters)
- {
- var animatorHash = CreateInstance<AnimatorHash>();
- animatorHash.SetHash(parameter.nameHash);
- AssetDatabase.CreateAsset(animatorHash,$"{_parametersFolder}/{parameter.name}.asset");
- }
- AssetDatabase.SaveAssets();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement