public void RestoreAnimatorState(Animator animator, UMAData umaData)
            {
                if (animator.layerCount == stateHashes.Length)
                {
                    for (int i = 0; i < animator.layerCount; i++)
                    {
                        animator.Play(stateHashes[i], i, stateTimes[i]);
                        if (i < layerWeights.Count)
                        {
                            animator.SetLayerWeight(i, layerWeights[i]);
                        }
                    }
                }

                foreach (AnimatorControllerParameter param in parameters)
                {
                    if (!animator.IsParameterControlledByCurve(param.nameHash))
                    {
                        switch (param.type)
                        {
                        case AnimatorControllerParameterType.Bool:
                            animator.SetBool(param.nameHash, param.defaultBool);
                            break;

                        case AnimatorControllerParameterType.Float:
                            animator.SetFloat(param.nameHash, param.defaultFloat);
                            break;

                        case AnimatorControllerParameterType.Int:
                            animator.SetInteger(param.nameHash, param.defaultInt);
                            break;
                        }
                    }
                }

                umaData.FireAnimatorStateRestoredEvent();

                if (animator.enabled == true)
                {
                    animator.Update(Time.deltaTime);
                }
                else
                {
                    animator.Update(0);
                }
            }
コード例 #2
0
            public void RestoreAnimatorState(Animator animator, UMAData umaData)
            {
                if (wasCopied == false)
                {
                    return;
                }
                if (animator == false)
                {
                    return;
                }

                if (animator.layerCount == stateHashes.Length)
                {
                    for (int i = 0; i < animator.layerCount; i++)
                    {
                        animator.Play(stateHashes[i], i, stateTimes[i]);
                        if (i < layerWeights.Count)
                        {
                            animator.SetLayerWeight(i, layerWeights[i]);
                        }
                    }
                }
                if (parameters != null)
                {
                    foreach (AnimatorControllerParameter param in parameters)
                    {
                        if (!animator.IsParameterControlledByCurve(param.nameHash))
                        {
                            switch (param.type)
                            {
                            case AnimatorControllerParameterType.Bool:
                                animator.SetBool(param.nameHash, param.defaultBool);
                                break;

                            case AnimatorControllerParameterType.Float:
                                animator.SetFloat(param.nameHash, param.defaultFloat);
                                break;

                            case AnimatorControllerParameterType.Int:
                                animator.SetInteger(param.nameHash, param.defaultInt);
                                break;
                            }
                        }
                    }
                }

                if (!animator.gameObject.activeInHierarchy)
                {
                    return;
                }

                umaData.FireAnimatorStateRestoredEvent();
                if (animator.isInitialized)
                {
#if UNITY_EDITOR
                    if (FreezeTime || animator.enabled == false)
                    {
                        animator.Update(0);
                    }
                    else
                    {
                        animator.Update(Time.deltaTime);
                    }
#else
                    if (animator.enabled == true)
                    {
                        animator.Update(Time.deltaTime);
                    }
                    else
                    {
                        animator.Update(0);
                    }
#endif
                }
            }