private void SetSprite(NumberPopupType popupType, GameObject numberObj, int index, int skinId, int i) { var renderer = numberObj.GetComponent <SpriteRenderer>(); switch (popupType) { case NumberPopupType.Hit: renderer.sprite = _allSkinData.GetSkin(skinId).Hit[index]; break; case NumberPopupType.Critical: renderer.sprite = _allSkinData.GetSkin(skinId).Critical[index]; break; case NumberPopupType.Take: renderer.sprite = _allSkinData.GetSkin(skinId).Take[index]; break; case NumberPopupType.Heal: renderer.sprite = _allSkinData.GetSkin(skinId).Heal[index]; break; default: break; } renderer.sortingOrder = i + _existCount; }
private void PopupNumberByType(NumberPopupType popupType, int damage, GameObject damageTakerObj, int skinId = 0) { float posOffsetY = damageTakerObj.GetComponent <SpriteRenderer>().bounds.extents.y + 0.2f; // INFO: e.g. damage = 8351 -> "8351" -> ['8','3','5','1'] -> indices = [8, 3, 5, 1] var numbers = damage.ToString().ToCharArray().Select(x => Convert.ToInt32(x.ToString())); foreach (var prop in numbers.Select((number, i) => new { number, i })) { var numberObj = InstantiatePopupNumber(posOffsetY, damageTakerObj, prop.i); SetSprite(popupType, numberObj, prop.number, skinId, prop.i); } _existCount += numbers.Count(); // To Avoid Overflow if (_existCount > 1000000000) { _existCount = 0; } }