Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我只想减一的时候,单位减去额外的数字_C#_Unity3d_Unity5 - Fatal编程技术网

C# 当我只想减一的时候,单位减去额外的数字

C# 当我只想减一的时候,单位减去额外的数字,c#,unity3d,unity5,C#,Unity3d,Unity5,我想做的是,当它击中一个触发碰撞器时,我希望它减去一个int,但是unity所做的是用3减去它,我把它连接到播放器本身 lifecontroller lves; public GameObject gm; CoinScript coins; // Use this for initialization void Start () { gm = GameObject.FindGameObjectWithTag("GM"); coins = gm.GetComponent<C

我想做的是,当它击中一个触发碰撞器时,我希望它减去一个
int
,但是unity所做的是用3减去它,我把它连接到播放器本身

lifecontroller lves;
public GameObject gm;
CoinScript coins;

// Use this for initialization
void Start () {
    gm = GameObject.FindGameObjectWithTag("GM");
    coins = gm.GetComponent<CoinScript>();
    lves = gm.GetComponent<lifecontroller>();
}

void OnTriggerEnter2D(Collider2D other)
{
    if(other.tag == "Evil")
    {
        lves.lives -= 1;
        Debug.Log("U hit it");
    }
}

// Update is called once per frame
void Update () {
    if(lves.lives == 0)
    {
        Debug.Log("u died");
    }
}
lifes;
公共游戏对象;
硬币;
//用于初始化
无效开始(){
gm=GameObject.FindGameObjectWithTag(“gm”);
coins=gm.GetComponent();
lves=gm.GetComponent();
}
无效OnTiggerEnter2D(碰撞的R2D其他)
{
if(other.tag==“邪恶”)
{
lves.lifes-=1;
Log(“U命中它”);
}
}
//每帧调用一次更新
无效更新(){
如果(lves.lives==0)
{
Log(“u死了”);
}
}

从屏幕截图判断,您的脚本多次附加到玩家游戏对象。选择您的玩家游戏对象,并删除重复的脚本。 确保只有一个脚本附加到它。它可能被连接到那里3次

如果您在运行时实例化多个玩家游戏对象,也会发生此问题,因为这也会复制您的脚本

编辑

在您的评论中有更新的图像,问题是您的播放器上有3个对撞机。确实,只有一个是由
IsTrigger
制作的,但是如果带有Evil标签的游戏对象也被标记为
IsTrigger
,这就是一个问题

您有2个选项来解决此问题:

1。选择带有邪恶标签的游戏对象,并确保没有连接到它的碰撞器被标记为
IsTrigger
。取消检查所有
IsTrigger
所有Evil标记的游戏对象的碰撞器上的属性。这会解决你的问题


2.玩家游戏对象上只有一个碰撞器。拆下另外2个。这将再次解决您的问题。

从屏幕截图判断,您的脚本已多次附加到玩家游戏对象。选择您的玩家游戏对象,并删除重复的脚本。 确保只有一个脚本附加到它。它可能被连接到那里3次

如果您在运行时实例化多个玩家游戏对象,也会发生此问题,因为这也会复制您的脚本

编辑

在您的评论中有更新的图像,问题是您的播放器上有3个对撞机。确实,只有一个是由
IsTrigger
制作的,但是如果带有Evil标签的游戏对象也被标记为
IsTrigger
,这就是一个问题

您有2个选项来解决此问题:

1。选择带有邪恶标签的游戏对象,并确保没有连接到它的碰撞器被标记为
IsTrigger
。取消检查所有
IsTrigger
所有Evil标记的游戏对象的碰撞器上的属性。这会解决你的问题


2.玩家游戏对象上只有一个碰撞器。拆下另外2个。这将再次解决您的问题。

这是我建议调试您的问题的方法:

void OnTriggerEnter2D(Collider2D other)
{
    if(other.tag == "Evil")
    {
        lves.lives -= 1;
        Debug.Log("U hit it", other.gameObject);
    }
}
通过查看您的屏幕截图,您将获得3条日志消息

始终使用控制台窗口中的“请勿折叠”来查看发生了什么情况


我建议您调试问题:

void OnTriggerEnter2D(Collider2D other)
{
    if(other.tag == "Evil")
    {
        lves.lives -= 1;
        Debug.Log("U hit it", other.gameObject);
    }
}
通过查看您的屏幕截图,您将获得3条日志消息

始终使用控制台窗口中的“请勿折叠”来查看发生了什么情况


触发器肯定会发生3次,您的屏幕截图显示(右侧有3次,因为重复日志会被折叠)


这可能是因为碰撞器的形状(圆形)。尝试使用我们在触发器进入时设置的bool和在触发器退出时清除的bool(或者更新应该可以清除)。

触发器确实发生了3次,您的屏幕截图显示了这一点(右侧有一个3,因为重复日志被折叠)



这可能是因为碰撞器的形状(圆形)。尝试使用我们在触发器进入时设置的bool和在触发器退出时清除的bool(甚至更新应该可以清除)。

您的代码很好。您可能已经将此脚本附加到了其他游戏对象。不,它不是我甚至重新编写了您可以在控制台窗口中看到的“U hit it”日志。有一点可以肯定,拥有这个脚本在这里不是问题。您的播放机上可能不止一次出现此脚本。要使脚本正常工作,需要将脚本附加到播放机上,否则它将无法工作,我检查了它不存在的每个对象:/n您的代码很好。您可能已经将此脚本附加到了其他游戏对象。不,它不是我甚至重新编写了您可以在控制台窗口中看到的“U hit it”日志。有一点可以肯定,拥有这个脚本在这里不是问题。您的播放机上可能不止一次出现此脚本。如果要使脚本正常工作,需要将其附加到播放机上,否则它将无法正常工作,并且我检查了它不存在的每个对象:/正如我多次说过的,它没有附加多次:p您说它在评论部分已修复。那么问题出在哪里呢?什么修复了它?不,这不是因为lese saidI在查看你的图像后发现了你的问题。我可以通过这些设置复制您的问题。向下滚动我的答案并检查其中的编辑。你有两个选择来解决这个问题。让我知道结果。谢谢它工作对撞机是问题所在谢谢:)正如我多次说的,它没有连接多次:pYou说它在评论部分是固定的。那么问题出在哪里呢?什么修复了它?不,这不是因为lese saidI在查看你的图像后发现了你的问题。我可以复制你的问题和那些