Увеличение здоровья при использовании расходных материалов - PullRequest
0 голосов
/ 23 февраля 2019

В моей игре есть инвентарь, в котором игрок может экипировать или выпить предмет.В моем инвентаре у меня есть зелье, которое игрок может использовать.Когда игрок использует зелье, это увеличивает здоровье персонажа.Итак, у меня есть ошибка, как это: не могу неявно преобразовать тип void в Player.Почему у меня такая ошибка?Очень ценю ваши ответы, ребята.Спасибо!

IConsumable.cs

public interface IConsumable {
    void Consume(Player player);
    void Consume(CharacterStats stats);
}

ConsumableController.cs

public class ConsumableController : MonoBehaviour {

    CharacterStats stats;

    Player player;

    int health = 100;

    void Start() {
        stats = GetComponent<Player> ().characterStats; 
        player = GetComponent<Player> ().IncreaseHealth(health);
    }

    public void ConsumeItem(Item item) {
        GameObject itemToSpawn = Instantiate (Resources.Load<GameObject>("Consumables/" + item.ObjectSlug));

        if (item.ItemModifier) {
            itemToSpawn.GetComponent<IConsumable> ().Consume (stats);
        } else {
            itemToSpawn.GetComponent<IConsumable> ().Consume (player);
        }
    }
}

PotionLog.cs

public class PotionLog : MonoBehaviour, IConsumable {

    public void Consume(Player player) {
        Debug.Log ("You drank a swig of the potion. Cool!");

        Destroy (gameObject);
    }

    public void Consume(CharacterStats stats) {
        Debug.Log ("You drank a swig of the potion. Rad!");

    }

}

Player.cs

public class Player : MonoBehaviour {

    public CharacterStats characterStats;

    public int currentHealth;

    public int maxHealth;

    public PlayerLevel PlayerLevel { get; set; }

    void Awake() {
        PlayerLevel = GetComponent<PlayerLevel> ();
        //this.currentHealth = this.maxHealth;
        characterStats = new CharacterStats (5, 10, 2);
    }

    public void TakeDamage(int amount) {
        Debug.Log ("Player takes: " + amount + " damage!");
        currentHealth -= amount;

        if (currentHealth <= 0)
            Die ();

        UIEventHandler.HealthChanged (this.currentHealth, this.maxHealth);
    }

    public void IncreaseHealth(int health) {
        currentHealth += health;

        if (currentHealth == maxHealth)
            return;

        UIEventHandler.HealthChanged (this.currentHealth, this.maxHealth);
    }

    private void Die() {
        Debug.Log ("Player dead! Reset health.");
        this.currentHealth = this.maxHealth;
        UIEventHandler.HealthChanged (this.currentHealth, this.maxHealth);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...