1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- [AddComponentMenu("NGUI/Examples/Play Idle Animations")]
- public class PlayIdleAnimations : MonoBehaviour
- {
- private void Start()
- {
- this.mAnim = base.GetComponentInChildren<Animation>();
- if (this.mAnim == null)
- {
- Debug.LogWarning(NGUITools.GetHierarchy(base.gameObject) + " has no Animation component");
- UnityEngine.Object.Destroy(this);
- }
- else
- {
- IEnumerator enumerator = this.mAnim.GetEnumerator();
- try
- {
- while (enumerator.MoveNext())
- {
- object obj = enumerator.Current;
- AnimationState animationState = (AnimationState)obj;
- if (animationState.clip.name == "idle")
- {
- animationState.layer = 0;
- this.mIdle = animationState.clip;
- this.mAnim.Play(this.mIdle.name);
- }
- else if (animationState.clip.name.StartsWith("idle"))
- {
- animationState.layer = 1;
- this.mBreaks.Add(animationState.clip);
- }
- }
- }
- finally
- {
- IDisposable disposable;
- if ((disposable = (enumerator as IDisposable)) != null)
- {
- disposable.Dispose();
- }
- }
- if (this.mBreaks.Count == 0)
- {
- UnityEngine.Object.Destroy(this);
- }
- }
- }
- private void Update()
- {
- if (this.mNextBreak < Time.time)
- {
- if (this.mBreaks.Count == 1)
- {
- AnimationClip animationClip = this.mBreaks[0];
- this.mNextBreak = Time.time + animationClip.length + UnityEngine.Random.Range(5f, 15f);
- this.mAnim.CrossFade(animationClip.name);
- }
- else
- {
- int num = UnityEngine.Random.Range(0, this.mBreaks.Count - 1);
- if (this.mLastIndex == num)
- {
- num++;
- if (num >= this.mBreaks.Count)
- {
- num = 0;
- }
- }
- this.mLastIndex = num;
- AnimationClip animationClip2 = this.mBreaks[num];
- this.mNextBreak = Time.time + animationClip2.length + UnityEngine.Random.Range(2f, 8f);
- this.mAnim.CrossFade(animationClip2.name);
- }
- }
- }
- private Animation mAnim;
- private AnimationClip mIdle;
- private List<AnimationClip> mBreaks = new List<AnimationClip>();
- private float mNextBreak;
- private int mLastIndex;
- }
|