void DisplayLog(LogItem log) { switch (log.type) { case LogType.Log: if (!LogInfo) { return; } break; case LogType.Warning: if (!LogWarning) { return; } break; default: if (!LogError) { return; } break; } LogItemHolder holder = logHolders[holderHeadIndex]; holder.gameObject.SetActive(true); holder.transform.SetAsLastSibling(); holderHeadIndex = (holderHeadIndex + 1) % logHolders.Count; holder.item = log; switch (log.type) { case LogType.Log: holder.SetColors(InfoBg, InfoFg); break; case LogType.Warning: holder.SetColors(WarningBg, WarningFg); break; default: holder.SetColors(ErrorBg, ErrorFg); break; } float holderWidth = -1; if (HolderTransform != null) { holderWidth = HolderTransform.sizeDelta.x; } StartCoroutine(DisplayMessageNextFrame(holder, holderWidth)); holder.stackTracePanel = stackTracePanel; }
IEnumerator DisplayMessageNextFrame(LogItemHolder holder, float holderWidth) { if (holderWidth > 0) { holder.SetPreferredWidth(holderWidth); } yield return(null); yield return(null); holder.DisplayMessage(); if (_containerScrollRect != null) { _containerScrollRect.verticalNormalizedPosition = 0f; } }