public override void Reset() { renderer = null; scoreFlashInstance = null; }
private void PushRendererToPool(ScoreFlashRendererBase objectForPool) { objectForPool.Cleanup(); objectForPool.gameObject.SetActive(false); rendererPool.Add(objectForPool); }
/// <summary> /// Updates the message currently displayed. /// </summary> /// <param name="message"> /// Either a simple text string, or your custom implementation of /// <see cref="ScoreFlashRendererBase"/>, or any of: int, long, /// float, double, Component (so you can also put in MonoBehaviours), /// GameObject ... or any object that has a useful ToString method ;-) /// </param> public void UpdateMessage(object message) { if (message is ScoreFlashRendererBase) { scoreFlashRenderer = (ScoreFlashRendererBase)message; } else if (message is int) { int val = (int)message; this.Text = val > 0 ? string.Format("+{0}", val) : string.Format("{0}", val); } else if (message is long) { long val = (long)message; this.Text = val > 0 ? string.Format("+{0}", val) : string.Format("{0}", val); } else if (message is float) { float val = (float)message; this.Text = val > 0 ? string.Format("+{0:0.00}", val) : string.Format("{0:0.00}", val); } else if (message is double) { double val = (double)message; this.Text = val > 0 ? string.Format("+{0:0.0000}", val) : string.Format("{0:0.0000}", val); } else if (message is UnityEngine.Component) { UnityEngine.Component val = (UnityEngine.Component)message; this.Text = val.name; } else if (message is GameObject) { GameObject val = (GameObject)message; this.Text = val.name; } else if (message is string) { this.Text = (string)message; } else { // we don't know better? well, just use the usual ToString() this.Text = message.ToString(); } }