public void ShowMessageImmediate(string message, UIColorScheme scheme, bool bulleted) { if (onShowMessage != null) { onShowMessage(message); } UIMessageElement newMessage = elementPool.GetAvailable(settings.messageElement, null, false, null); shownElements.Add(newMessage); if (newMessage.transform.parent != transform) { newMessage.transform.SetParent(transform, Vector3.zero, Quaternion.identity, Vector3.one); } UpdateMessageLayout(newMessage, message, bulleted); newMessage.ShowMessage(parameters.duration, parameters.fadeInOut.x, parameters.fadeInOut.y, scheme); float pivotOffset = (1.0f - yPivot) * shownElements.Count * parameters.messageParams.messageHeight; // newMessage.rectTransform.anchoredPosition = new Vector2((rectTransform.anchorMin.x == 0 ? 0 : -newMessage.elementWidth) + parameters.startXOffset, - pivotOffset); newMessage.rectTransform.anchoredPosition = new Vector2(parameters.startXOffset, -pivotOffset); newMessage.gameObject.SetActive(true); }
void UpdateMessageLayout(UIMessageElement message, string displayMessage, bool bulleted) { message.text.SetText(displayMessage); message.EnableFlair(bulleted); UIBaseParameters.CopyParameters(ref message.parameters, parameters.messageParams); message.SetPivotAndAnchor(new Vector2(rectTransform.pivot.x, yPivot)); message.UpdateElementLayout();//true); }
// protected override void Update() { // base.Update(); if (!isActive) { return; } if (!Application.isPlaying) { shownElements = GetComponentsInChildren <UIMessageElement>().ToList(); for (int i = 0; i < shownElements.Count; i++) { UpdateMessageLayout(shownElements[i], "Message " + (i * 999) + " sdkjfksjhflSDFSFSFDfsdfsdfsfsfsdfsdfsfsf", Random.value < .5f); } // return; } float deltaTime = Time.unscaledDeltaTime; float speed = Application.isPlaying ? deltaTime * parameters.moveSpeed : 1; bool leftToRight = rectTransform.anchorMin.x == 0; int lastIndex = shownElements.Count - 1; float pivotOffset = (1.0f - yPivot) * (shownElements.Count * parameters.messageParams.messageHeight + parameters.messageParams.messageHeight); for (int i = shownElements.Count - 1; i >= 0; i--) { UIMessageElement e = shownElements[i]; e.rectTransform.anchoredPosition = Vector2.Lerp( e.rectTransform.anchoredPosition, new Vector2( 0, // leftToRight ? 0 : -e.elementWidth, ((lastIndex - i) * (parameters.upToDown ? -e.elementHeight : e.elementHeight)) - pivotOffset ), speed ); if (Application.isPlaying) { if (e.UpdateElement(deltaTime)) { shownElements.Remove(e); } } } }