using System; using UnityEngine; namespace ZXLA { class FileSystemUIDisplay : MonoBehaviour { [SerializeField] private UnityEngine.UI.ScrollRect _scrollRect; [SerializeField] private FileSystemItem _itemPrefab; private FileSystem _fileSystem; void Start() { _fileSystem = GameObject.FindObjectOfType(); _fileSystem.OnFileSystemChanged += OnRepaint; } private void OnRepaint(FileSystemOperation obj) { if (!_itemPrefab) throw new NullReferenceException("_itemPrefab is null"); var contentTransform = _scrollRect.content.transform; var componentsInChildren = contentTransform.GetComponentsInChildren(); foreach (var componentsInChild in componentsInChildren) { GameObject.Destroy(componentsInChild.gameObject); } var readOnlyDictionary = _fileSystem.GetAllObjects(); foreach (var kv in readOnlyDictionary) { if (!kv.Value.isDisplay) continue; var fileSystemItem = GameObject.Instantiate(_itemPrefab,contentTransform); fileSystemItem.SetObject(kv.Value); } } } }