public Transform dogs; public List<GameObject> obj_dogs; public List<Sprite> spr_dogs; public List<GameObject> spr_change; // Use this for initialization void Start() { spr_change = new List<GameObject>(); obj_dogs = new List<GameObject>(); for (int i = 0; i < 42; i++) { GameObject dog = Instantiate<GameObject>(Resources.Load<GameObject>("ItemDog")); dog.transform.SetParent(dogs); dog.GetComponent<Image>().sprite = spr_dogs[UnityEngine.Random.Range(0, spr_dogs.Count)]; EventTriggerListener.Get(dog).onClick = OnDogClick; obj_dogs.Add(dog); } } void OnDogClick(GameObject go) { List<GameObject> desAni = new List<GameObject>(); dogs.GetComponent<GridLayoutGroup>().enabled = false; spr_change.Add(go); if (spr_change.Count < 2) return; else { Sequence seq = DOTween.Sequence(); seq.Append(spr_change[0].transform.DOLocalMove(spr_change[1].transform.localPosition, 0.5f)); seq.Join(spr_change[1].transform.DOLocalMove(spr_change[0].transform.localPosition, 0.5f)); seq.AppendCallback(() => { for (int i = 0; i < 2; i++) { GameObject ani = Instantiate<GameObject>(Resources.Load<GameObject>("DestroyAni")); ani.transform.SetParent(dogs); ani.transform.localPosition = spr_change[i].transform.localPosition; ani.transform.localScale = Vector3.one; desAni.Add(ani); Destroy(spr_change[i]); } spr_change.Clear(); }); } }