using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class Canvas_Library : MonoBehaviour { List spawners; Transform scrollRectContent; static string thumbmailPath = "Library/LibraryThumbnails/"; private void Awake() { spawners = new List(); scrollRectContent = GetComponentInChildren().content; var models = Resources.LoadAll("Library/LibraryPrefab"); var spawner = Resources.Load("UI/InventoryItem"); var libraryTabs = GetComponentsInChildren(); foreach ( var item in models) { var tmpSpawner = Instantiate(spawner); var thumbnailTexturePath = thumbmailPath + item.name; tmpSpawner.SetInfo(item, TextureToSprite(Resources.Load(thumbnailTexturePath))); tmpSpawner.transform.SetParent(scrollRectContent); spawners.Add(tmpSpawner); } for (int i = 0; i < libraryTabs.Length; i++) { var index = i; libraryTabs[i].onValueChanged.AddListener(isOn => OnActiveTabChange(index, isOn)); libraryTabs[i].onValueChanged.AddListener(isOn => libraryTabs[index].GetComponent().OnToggle(isOn)); } } public void OnActiveTabChange(int index, bool isOn) { if ( isOn) { foreach( var item in spawners) { item.gameObject.SetActive(true); } if ( index == 0) { return; } foreach( var item in spawners) { if ((int)item.targetModel.modelType != index) { item.gameObject.SetActive(false); } } } } public Sprite TextureToSprite(Texture2D texture) => Sprite.Create(texture, new Rect(0f, 0f, texture.width, texture.height), new Vector2(0.5f, 0.5f), 50f, 0, SpriteMeshType.FullRect); }