using UnityEngine; using System.Collections.Generic; using AibisDream.UI; using UnityEngine.UI; namespace Demo { [RequireComponent(typeof(LoopScrollRect))] [DisallowMultipleComponent] public class InitOnStart : MonoBehaviour, ILoopScrollPrefabSource, ILoopScrollDataSource { public GameObject item; public int totalCount = -1; // Implement your own Cache Pool here. The following is just for example. Stack pool = new Stack(); public GameObject GetObject(int index) { if (pool.Count == 0) { return Instantiate(item); } Transform candidate = pool.Pop(); candidate.gameObject.SetActive(true); return candidate.gameObject; } public void ReturnObject(Transform trans) { // Use `DestroyImmediate` here if you don't need Pool trans.SendMessage("ScrollCellReturn", SendMessageOptions.DontRequireReceiver); trans.gameObject.SetActive(false); trans.SetParent(transform, false); pool.Push(trans); } public void ProvideData(Transform transform, int idx) { transform.SendMessage("ScrollCellIndex", idx); } void Start() { var ls = GetComponent(); ls.prefabSource = this; ls.dataSource = this; ls.totalCount = totalCount; ls.RefillCells(); } } }