Advertisement
Pro_Unit

MVC Button

Aug 23rd, 2022
1,028
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.03 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class NewBehaviourScript : MonoBehaviour
  7. {
  8.     [SerializeField] private Transform _prefab;
  9.     [SerializeField] private RectTransform _content;
  10.     private List<Sprite> _texture2Ds;
  11.  
  12.     private void Start()
  13.     {
  14.         Sprite[] sprites = Resources.LoadAll<Sprite>("obj");
  15.         _texture2Ds = new List<Sprite>(sprites);
  16.         StartCoroutine(GetItems(_texture2Ds.Count, OnReceivedModels));
  17.     }
  18.  
  19.     private IEnumerator GetItems(int count, System.Action<TestItemModel[]> callback)
  20.     {
  21.         yield return null;
  22.  
  23.         var results = new TestItemModel[count];
  24.  
  25.         for (int i = 0; i < _texture2Ds.Count; i++)
  26.         {
  27.             results[i] = new TestItemModel { ButtonImageSprite = _texture2Ds[i] };
  28.         }
  29.  
  30.         callback(results);
  31.     }
  32.  
  33.     private void OnReceivedModels(TestItemModel[] models)
  34.     {
  35.         foreach (Transform child in _content)
  36.             Destroy(child.gameObject);
  37.  
  38.         foreach (TestItemModel model in models)
  39.         {
  40.             Transform instance = Instantiate(_prefab);
  41.             instance.SetParent(_content, false);
  42.             InitializeItemView(instance, model);
  43.         }
  44.     }
  45.  
  46.     private void InitializeItemView(Transform viewGameObject, TestItemModel model)
  47.     {
  48.         var view = new TestItemView(viewGameObject.transform,model);
  49.  
  50.         view.ClickButton.onClick.AddListener(() => { RabochayOblast.dot = view.Pin; });
  51.     }
  52.  
  53.     public class TestItemView
  54.     {
  55.         public readonly Transform Pin;
  56.         public readonly Button ClickButton;
  57.  
  58.         public TestItemView(Transform rootView, TestItemModel model)
  59.         {
  60.             ClickButton = rootView.Find("clickButton").GetComponent<Button>();
  61.             Pin = rootView.Find("pin").GetComponent<Transform>();
  62.  
  63.             ClickButton.image.sprite = model.ButtonImageSprite;
  64.         }
  65.     }
  66.  
  67.     public class TestItemModel
  68.     {
  69.         public Sprite ButtonImageSprite;
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement