using System.Collections; using System.Collections.Generic; using UnityEngine; public class AfterImagePool : MonoBehaviour { public static AfterImagePool Instance; //public CharacterControl myCharacterControl; public GameObject targetObject; //Set these manually to the character object you're copying public Animator targetAnimator; //Set these manually to the character object you're copying public GameObject prefab; //This is the prefab you made in the scene. It's a parent transform with an animator and AfterImage script on it, with Armature and SkinnedMeshRenderer children public int poolSize = 10; public List afterImages; public int interval = 10; public int time = 0; private bool isActive = false; // Use this for initialization void Start() { afterImages = new List(poolSize); for (int i = 0; i < poolSize; i++) { GameObject nextAfterImage = Instantiate(prefab); nextAfterImage.transform.SetParent(this.transform); nextAfterImage.GetComponent().targetObject = targetObject; //Game Object Target nextAfterImage.GetComponent().targetAnimator = targetAnimator; //Animator Target nextAfterImage.SetActive(false); afterImages.Add(nextAfterImage.GetComponent()); } Instance = this; } // Update is called once per frame void Update() { if (!isActive) return; time++; if (time >= interval) { time = 0; AddAfterImage(); } } void AddAfterImage() { for (int i = 0; i < poolSize; i++) { if (!afterImages[i].active) { afterImages[i].Activate(); break; } } } public void Activate(bool isActive) { this.isActive = isActive; time = isActive ? interval : 0; } public void SetInterval(int interval) { this.interval = interval; } }