C# 卫生系统脚本未统一运行;没有出现错误或Debug.Log语句

C# 卫生系统脚本未统一运行;没有出现错误或Debug.Log语句,c#,unity3d,C#,Unity3d,对于我在Unity游戏中的健康系统,我有一个脚本,它负责我在游戏中的“敌人”生命值。游戏运行得很好,但脚本似乎什么也没做。我没有收到任何错误消息,但事实上,它不工作,调试。日志语句没有出现在控制台中,这似乎是因为函数调用不正确,或者其他一些东西出错。这是我的剧本: using System.Diagnostics; using UnityEngine; public class Health : MonoBehaviour { private float hitPoints = 5; /

对于我在Unity游戏中的健康系统,我有一个脚本,它负责我在游戏中的“敌人”生命值。游戏运行得很好,但脚本似乎什么也没做。我没有收到任何错误消息,但事实上,它不工作,调试。日志语句没有出现在控制台中,这似乎是因为函数调用不正确,或者其他一些东西出错。这是我的剧本:

using System.Diagnostics;
using UnityEngine;
public class Health : MonoBehaviour {
private float hitPoints = 5;
    // Health popup
    void announceUp()
    {
        UnityEngine.Debug.Log("If this message shows in Debug.Log, the script should be working.");
    }
    // Update is called once per frame
    void Update()
    {
        void OnTriggerEnter(Collider other)
        {
            if (other.gameObject.tag == "Bullet")
            {
                UnityEngine.Debug.Log("The enemy has been hit!");
                hitPoints = hitPoints - 1f;
                if (hitPoints == 0f)
                {
                    UnityEngine.Debug.Log("The enemy has been eliminated!");
                    Destroy(gameObject);
                }
            }
        }
    }
}

我在互联网上翻了翻,想看看出了什么问题,但什么也找不到。有人能告诉我我的编程有什么问题吗?

您的scrpt当前不起作用,因为您正在方法中定义方法。当您这样做时,您定义的是一个局部函数,而Unity则无法在实际冲突发生时调用该函数。所以你的函数永远不会被调用

例如:

使用系统诊断;
使用UnityEngine;
公共卫生:单一行为
{
私人浮动生命值=5;
//健康弹出窗口
作废{
UnityEngine.Debug.Log(“如果此消息显示在Debug.Log中,
脚本应该可以正常工作。”);
}
//每帧调用一次更新
无效更新(){}
无效对撞机(对撞机其他){
如果(other.gameObject.tag==“Bullet”){
UnityEngine.Debug.Log(“敌人被击中了!”);
生命点=生命点-1f;
如果(生命点==0f){
UnityEngine.Debug.Log(“敌人已被消灭!”);
摧毁(游戏对象);
}
}
}
}

您的scrpt当前不起作用,因为您正在方法中定义方法。当您这样做时,您定义的是一个局部函数,而Unity则无法在实际冲突发生时调用该函数。所以你的函数永远不会被调用

例如:

使用系统诊断;
使用UnityEngine;
公共卫生:单一行为
{
私人浮动生命值=5;
//健康弹出窗口
作废{
UnityEngine.Debug.Log(“如果此消息显示在Debug.Log中,
脚本应该可以正常工作。”);
}
//每帧调用一次更新
无效更新(){}
无效对撞机(对撞机其他){
如果(other.gameObject.tag==“Bullet”){
UnityEngine.Debug.Log(“敌人被击中了!”);
生命点=生命点-1f;
如果(生命点==0f){
UnityEngine.Debug.Log(“敌人已被消灭!”);
摧毁(游戏对象);
}
}
}
}

OnTriggerEnter
函数从更新方法中删除。这会给我一个错误,即关闭的花括号丢失,即使它在那里…将
OnTriggerEnter
函数从更新方法中删除。这会给我一个错误,即关闭的花括号丢失,即使它在那里…然后出现错误你的碰撞有问题。检查包含OnTiggerEnter的objet是否实际启用了IsTrigger,并且这两个对象都具有长方体碰撞器和刚体。脚本附加到的父对象没有刚体,但由于“敌人”是碎布玩偶,因此其所有骨骼都具有您提到的组件。当它被射中时,它确实与子弹相互作用(例如:扑通)。你确定敌人启用了IsTrigger,因为如果他没有启用,你将需要使用OnCollisionCenter。不!它没有启用,但现在工作得很好!谢谢那么你的碰撞就有问题了。检查包含OnTiggerEnter的objet是否实际启用了IsTrigger,并且这两个对象都具有长方体碰撞器和刚体。脚本附加到的父对象没有刚体,但由于“敌人”是碎布玩偶,因此其所有骨骼都具有您提到的组件。当它被射中时,它确实与子弹相互作用(例如:扑通)。你确定敌人启用了IsTrigger,因为如果他没有启用,你将需要使用OnCollisionCenter。不!它没有启用,但现在工作得很好!谢谢