LogPanelScript.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. public class LogPanelScript : MonoBehaviour {
  7. [SerializeField] Button showHidePanel;
  8. [SerializeField] GameObject logRowPrefab;
  9. [SerializeField] RectTransform content;
  10. private int baseRowHeight = 20;
  11. void Start() {
  12. showHidePanel.onClick.AddListener(ShowHidePanelToggle);
  13. }
  14. private void ShowHidePanelToggle() {
  15. RectTransform rectTransform = this.GetComponent<RectTransform>();
  16. if (rectTransform.sizeDelta.x > 50) { // minimize
  17. rectTransform.sizeDelta = new Vector2(40, rectTransform.sizeDelta.y);
  18. } else { // maximize
  19. rectTransform.sizeDelta = new Vector2(300, rectTransform.sizeDelta.y);
  20. }
  21. }
  22. public void AddText(string text) {
  23. GameObject newLogRow = GameObject.Instantiate(logRowPrefab, new Vector3(0, 0, 0), Quaternion.identity);
  24. TMPro.TMP_Text logText = newLogRow.GetComponent<TMPro.TMP_Text>();
  25. RectTransform rectTransform = GetComponent<RectTransform>();
  26. rectTransform.localScale = new Vector3(1, 1, 1);
  27. newLogRow.transform.SetParent(content.transform);
  28. logText.text = text;
  29. int lineCount = logText.textInfo.lineCount;
  30. rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, baseRowHeight * lineCount);
  31. }
  32. }