C# 当游戏对象触发时,在Unity控制台中打印消息?第5/2D单元

C# 当游戏对象触发时,在Unity控制台中打印消息?第5/2D单元,c#,unity5,C#,Unity5,我正在为学校做一个“游戏”,我需要统计选票。我使用unity让角色在按钮上跳跃来计算选票,然后进入下一个问题。这就是我到目前为止所做的: using UnityEngine; using System.Collections; public class Vote1 : MonoBehaviour { private int vote1; public GameObject hero_1; void Start () { vote1 = 0;

我正在为学校做一个“游戏”,我需要统计选票。我使用unity让角色在按钮上跳跃来计算选票,然后进入下一个问题。这就是我到目前为止所做的:

using UnityEngine;
using System.Collections;

public class Vote1 : MonoBehaviour {

    private int vote1;
    public GameObject hero_1;

    void Start () {
        vote1 = 0;
    }

    void Update () {
    }
    void OnCollisionEnter2D(Collision2D coll) {
        if (coll.gameObject.tag == "PlayerObject"){
            vote1 = vote1 + 1;
            print("One Vote Added");
        }
    }
}
当“hero_1”出现在按钮上时,应该添加+1,并在控制台中显示消息“OneVote Added”,但实际情况并非如此。我做错了什么

更新了代码


现在使用OnCollisionInter2D,但仍然无法按预期工作。我还缺少什么?

您可能需要使用Console.WriteLine(“您的消息”);
此外,但我不确定,您似乎得到了转换标签,这可能不是您想要做的

假设Unity可能不支持标准的.NET BCL,您可能需要查看Unity的控制台“日志”功能:

或者研究一个合适的日志记录解决方案,例如NLog。

如果您想在控制台的同一行中打印不同的字符串,请使用
控制台。

如果每次写入控制台时都需要一个新行,请使用
console.WriteLine(“添加一票”)

因为
print
monobhavior
中定义的一种方法来打印到Unity控制台,所以我假设您实际上在Unity控制台中查找输出,并且没有显示任何内容。这意味着不会调用
OnTriggerStay
,或者碰撞器的根目录没有
PlayerObject
标记

当3D物理实体位于触发器内部时,调用
OnTriggerStay。确保投票游戏对象上有Vote1组件,并且其碰撞器已选中“Is Trigger”

还要确保对象具有物理实体和碰撞器,而碰撞器不是触发器。对象的根变换(即层次结构中没有任何父对象的根变换)应具有
PlayerObject
标记。如果播放机位于父容器中,则
transform.root
将获取该父容器,而不是播放机本身

另外,确保两个项目之间的冲突没有通过编辑->项目设置->物理->图层冲突矩阵过滤掉

最后,确保所有功能都已启用


注意:您使用的是
OnTriggerStay
,当玩家处于触发器中时,它每帧将被击中一次。如果投票后您没有某种机制来删除播放机,那么根据FPS,播放机将每秒增加30-60张投票。

Console.WriteLine是否有效?print()函数是什么样子?另外,vote1=vote1+1;可以是vote1++或vote1+=1;Console.WriteLine也不起作用。只有当其中一个碰撞器还连接了刚体时才会发送触发事件。我不知道这意味着什么,但听起来确实很重要。我有一个盒子,其中一个boxcollider2d设置为触发,另一个“hero_1”设置为PlayerObject。当英雄移动到方框上方时,这将触发投票=投票+1事件,并将“添加一票”放在控制台中。当他离开时,我也希望投票回到0。别忘了添加:使用文件顶部的系统,如果你想使用此功能,是否有其他代码我应该用于2d?也许我应该提到我在2d工作。确实有<代码>OnTiggerStay仅适用于三维物理实体。您要查找的是
OnTriggerStay2D
(或者根据我的说明可能是
OnTriggerEnter2D
)我查找了OnTriggerEnter2D,发现在本例中它与OnCollisionInter2d相同(我尝试了两种方法),并且它没有注册冲突/触发器。