Unity3D(C#) — Почему не восстанавливается здоровье персонажа?
судя по коду у вас должно быть пять жизней и пять сердечек (и кстати советовал бы ввести одну переменную под КОЛИЧЕСТВО ЖИЗНЕЙ и везде использовать именно её.
а так вам могу только предложить отладку включить и посмотреть что происходит на момент пополнения сердец
но если не хотите сами искать то вот вам так сказать споилер-наводка
if (i < character.Lives) - а от какого до какого значения меняется у вас жизнь? я так вижу от 0 до 4.
то есть полные 5 жизней у вас когда Lives == 4
а при проверке будет только для i равное  0,1,2,3  - включаться.
тоесть вам или жизни считать от 1 до 5. и условие в свойстве Lives менять. или по массиву проходите с другим условием))
Мне кажется, (в юнити не спец), что это происходит из-за того, что вы всегда создаёте новый объект
>Вот код пополнения "сердечек":
spoiler
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Heart : MonoBehaviour 
{
  private void OnTriggerEnter2D(Collider2D collider)
  {
    Character character = collider.GetComponent ();
    if (character) 
    {
      character.Lives++;
      Destroy (gameObject);
    }
  }
}