private void SetDamageText(eDamageTextType ty, Color topC, Color bottomC, Color outlineC, string ic, string tp, string tpSprite, int ftSize) { DamageText.Add(new DamageTextColor { textType = ty, topColor = new Color(topC.r, topC.g, topC.b), bottomColor = new Color(bottomC.r, bottomC.g, bottomC.b), outlineColor = new Color(outlineC.r, outlineC.g, outlineC.b), icon = ic, tip = tp, tipSprite = tpSprite, fontSize = ftSize }); }
private void SetDamageText(int damage, eDamageTextType type) { UIDamageText damageText = null; if (PoolManager.Instance != null && PoolManager.Instance.GetDamageTextFromPool(type, out damageText)) { damageText.Init(damageDummy != null ? damageDummy : transform, damage); } else { LoadAssetbundle.LoadPrefabCB loadDamageTextPrefabCB = new LoadAssetbundle.LoadPrefabCB(LoadDamageTextCompleteCB); PrefabManager.Instance.LoadPrefab(GameManager.Instance.GetDamagePath(type), System.Guid.NewGuid(), loadDamageTextPrefabCB, damage); } }
private void SetFontColor(eDamageTextType type) { for (var i = 0; i < DamageText.Count; i++) { DamageTextColor color = DamageText[i]; if (color.textType == type) { DamagesLabel.gradientTop = color.topColor; DamagesLabel.gradientBottom = color.bottomColor; DamagesLabel.effectColor = color.outlineColor; DamagesLabel.fontSize = color.fontSize; TipSprite.spriteName = color.tipSprite; break; } } }
private IEnumerator ShowDamage_coroutine(Transform spawn_point, Vector3 offset, int numDamages, eDamageTextType text_type, System.Action onComplete = null) { this.offset = offset; this.target = spawn_point; this.onShowCompleteCallback = onComplete; if (numDamages < 0) {// heal DamagesLabel.text = (-numDamages).ToString(); setTipSpritePos(); } else if (numDamages > 0) {// damage DamagesLabel.text = numDamages.ToString(); setTipSpritePos(); } else {// miss/block switch (text_type) { case eDamageTextType.Miss: case eDamageTextType.Block: DamagesLabel.text = "0"; setTipSpritePos(); break; default: DamagesLabel.text = string.Empty; setTipSpritePos(); break; } } SetFontColor(text_type); for (int i = 0; i < DamageMotions.Count; i++) { DamageMotions[i].alpha = 0; DamageMotions[i].transform.localPosition = Vector3.zero; } #region PsdLayerSpriteFont FIX // ******** // PsdLayerSpriteFont refresh its text content only on its Update(). // This is problematic cause it results in seeing previous text during the first frame (looks "buggy") // and also prevent us to calculate the bounds correctly // // WORK-AROUND : we hide the label during next frame // ******** // wait for 1 frame yield return(null); #endregion for (int i = 0; i < DamageMotions.Count; i++) { DamageMotions[i].alpha = 1; } for (int i = 0; i < m_tweeners.Length; ++i) { m_tweeners[i].tweenFactor = 0; m_tweeners[i].PlayForward(); } bounds = NGUIMath.CalculateRelativeWidgetBounds(mDMono.transform); UpdatePosition(true); _ShowDamage_Seq = ILRTimerManager.instance.AddTimer(SHOW_DURATION, int.MaxValue, delegate { OnShowComplete(); }); }
public void ShowDamage(int numDamages, Transform spawn_point, Vector3 offset, eDamageTextType text_type, System.Action onComplete = null) { StartCoroutine(ShowDamage_coroutine(spawn_point, offset, numDamages, text_type, onComplete)); }