You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
1 year ago
|
using BestHTTP.Examples.Helpers;
|
||
|
using System;
|
||
|
using System.Collections;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
|
||
|
namespace BestHTTP.Examples
|
||
|
{
|
||
|
public static class GUIHelper
|
||
|
{
|
||
|
// https://en.wikipedia.org/wiki/Binary_prefix
|
||
|
private static string[] prefixes = new string[] { " B", " KiB", " MiB", " GiB", " TiB" };
|
||
|
public static string GetBytesStr(double bytes, byte precision)
|
||
|
{
|
||
|
int prefixIdx = 0;
|
||
|
while (bytes >= 1024)
|
||
|
{
|
||
|
bytes = bytes / 1024;
|
||
|
prefixIdx++;
|
||
|
}
|
||
|
|
||
|
return bytes.ToString("F" + precision) + prefixes[prefixIdx];
|
||
|
}
|
||
|
|
||
|
public static void RemoveChildren(RectTransform transform, int maxChildCount)
|
||
|
{
|
||
|
while (transform.childCount > maxChildCount)
|
||
|
{
|
||
|
var child = transform.GetChild(0);
|
||
|
child.SetParent(null);
|
||
|
|
||
|
GameObject.Destroy(child.gameObject);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static TextListItem AddText(TextListItem prefab, RectTransform contentRoot, string text, int maxEntries, ScrollRect scrollRect)
|
||
|
{
|
||
|
if (contentRoot == null)
|
||
|
return null;
|
||
|
|
||
|
var listItem = GameObject.Instantiate<TextListItem>(prefab, contentRoot, false);
|
||
|
listItem.SetText(text);
|
||
|
|
||
|
GUIHelper.RemoveChildren(contentRoot, maxEntries);
|
||
|
|
||
|
if (scrollRect != null && scrollRect.isActiveAndEnabled)
|
||
|
scrollRect.StartCoroutine(ScrollToBottom(scrollRect));
|
||
|
|
||
|
return listItem;
|
||
|
}
|
||
|
|
||
|
public static IEnumerator ScrollToBottom(ScrollRect scrollRect)
|
||
|
{
|
||
|
yield return null;
|
||
|
|
||
|
if (scrollRect != null && scrollRect.isActiveAndEnabled)
|
||
|
scrollRect.normalizedPosition = new Vector2(0, 0);
|
||
|
}
|
||
|
}
|
||
|
}
|