コード例 #1
0
    void ExtractStatesData(MecanimControllersInfo controllersInfo)
    {
        controllersInfo.ControllersData = null;
        List <MecanimControllerDataEntry> controllerDataList = new List <MecanimControllerDataEntry>();

        foreach (var controller in controllersInfo.AnimatorControllers)
        {
            if (controller == null)
            {
                continue;
            }

            List <MecanimStateDataEntry> stateDataList = new List <MecanimStateDataEntry>();
            int layerCount = controller.GetLayerCount();

            for (int layer = 0; layer < layerCount; layer++)
            {
                StateMachine targetStateMachine = controller.GetLayerStateMachine(layer);
                List <State> states             = targetStateMachine.statesRecursive;
                stateDataList.AddRange(states.Select(st => new MecanimStateDataEntry(layer, st.name, st.GetUniqueName(), st.GetTag(),
                                                                                     st.GetUniqueNameHash(), Animator.StringToHash(st.GetTag())
                                                                                     )));
            }

            MecanimControllerDataEntry controllerData = new MecanimControllerDataEntry();
            controllerData.Controller = controller;
            controllerData.StatesData = stateDataList.ToArray();

            controllerDataList.Add(controllerData);
        }

        controllersInfo.ControllersData = controllerDataList.ToArray();
        Debug.Log("Данные MecanimControllersInfo обновлены");
    }
コード例 #2
0
    public override void OnInspectorGUI()
    {
        if (GUILayout.Button("Update states data"))
        {
            MecanimControllersInfo controllersInfo = serializedObject.targetObject as MecanimControllersInfo;
            ExtractStatesData(controllersInfo);
            EditorUtility.SetDirty(serializedObject.targetObject);
        }

        DrawDefaultInspector();
    }