首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么当当前的健康值为0时,我的游戏屏幕上没有显示?

为什么当当前的健康值为0时,我的游戏屏幕上没有显示?
EN

Stack Overflow用户
提问于 2022-07-23 15:09:38
回答 1查看 41关注 0票数 0

我正忙着创建一个健康系统,并在屏幕上创建了一个游戏来显示当前的健康状况是0/玩家死亡。但是屏幕上的游戏没有显示出来(我对if不太了解)

代码语言:javascript
运行
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.InputSystem;

public class HealthSystem : MonoBehaviour
{
    public int maxHealth = 100;
    public int currentHealth;

    public HealthBar healthBar;
    public GameObject gameOver;

    public bool damage;

    // Start is called before the first frame update
    void Start()
    {
        currentHealth = maxHealth;
        healthBar.SetMaxHealth(maxHealth);
    }

    void TakeDamage(int damage)
    {
        currentHealth -= damage;

        healthBar.SetHealth(currentHealth);
    }
    
    public void GameOver()
    {
        if (currentHealth == 0)
        {
            gameOver.SetActive(true);
        }
    }

    public void RestartButton()
    {
        SceneManager.LoadScene("Playground");
    }
    
    public void OnDamage(InputValue value)
    {
        DamageInput(value.isPressed);
        TakeDamage(10);
    }

    public void DamageInput(bool newDamageState)
    {
        damage = newDamageState;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-23 15:31:54

在代码中没有调用GameOver()。每次减少currentHealth()时,检查是否达到零,并执行必要的操作。为此,在您的GameOver()方法中调用TakeDamage()

代码语言:javascript
运行
复制
void TakeDamage(int damage)
{
    currentHealth -= damage;
    
    GameOver();

    healthBar.SetHealth(currentHealth);
}

另外,检查currentHealth是否小于或等于0,而不仅仅是0

代码语言:javascript
运行
复制
public void GameOver()
{
    if (currentHealth <= 0)
    {
        gameOver.SetActive(true);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73091819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档