Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using System.Linq;
- using UnityEngine;
- namespace UIBillboard
- {
- public class Billboard : MonoBehaviour
- {
- [SerializeField] private bool _sort = true;
- [SerializeField] private Transform _holder;
- [SerializeField] private BillboardItem _template;
- [Space]
- [SerializeField] private BillboardItem[] _items;
- private Transform _mainCameraTransform;
- private Dictionary<string, BillboardItem> _billboardItems;
- public void SetItemValue(string item, string value) =>
- _billboardItems[item].SetValue(value);
- public void CreateNewItem(string item, string startValue)
- {
- BillboardItem billboardItem = Instantiate(_template, _holder);
- billboardItem.Name = item;
- billboardItem.SetValue(startValue);
- GetAllItems();
- }
- private void GetAllItems()
- {
- _items = _holder.GetComponentsInChildren<BillboardItem>();
- if (_sort)
- {
- _items = _items.OrderBy(ItemNameLength).ToArray();
- foreach(Transform child in _holder)
- child.SetAsFirstSibling();
- }
- _billboardItems = _items.ToDictionary(item => item.Name);
- }
- private static int ItemNameLength(BillboardItem item) =>
- item.Name.Length;
- private void Start() =>
- _mainCameraTransform = Camera.main.transform;
- private void LateUpdate() =>
- transform.LookAt(
- transform.position + _mainCameraTransform.rotation * Vector3.forward,
- _mainCameraTransform.rotation * Vector3.up);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement