当游戏对象命中触发器时,在 Unity 控制台中打印消息?统一5/2D

本文关键字:消息 打印 统一 控制台 2D 对象 游戏 触发器 Unity | 更新日期: 2023-09-27 18:36:08

我正在为学校做一个"游戏",我需要统计选票。我使用 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,并在控制台中显示消息"已添加一票",但事实并非如此。我做错了什么?

更新了代码

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

当游戏对象命中触发器时,在 Unity 控制台中打印消息?统一5/2D

由于print是在MonoBehaviour中定义的用于打印到 Unity 控制台的方法,因此我假设您实际上正在 Unity 控制台中查找输出,并且没有显示任何内容。这意味着没有调用OnTriggerStay,或者碰撞器的根没有PlayerObject标记。

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

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

此外,请确保两个项目之间的碰撞未通过编辑>项目设置->物理>图层碰撞矩阵过滤掉。

最后,确保所有内容都已启用!

注意:您正在使用OnTriggerStay当播放器处于触发器中时,每帧将命中一次。如果您在投票后没有某种机制来删除玩家,那么他们将每秒增加 30-60 票,具体取决于 FPS。

假设 Unity

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

在此处输入链接说明

例如,要么研究适当的日志记录解决方案,例如 NLog。

如果要在

控制台的同一行中打印不同的字符串,请使用Console.Write("One vote Added")。如果每次写入控制台时都需要一个新行,请使用 Console.WriteLine("One Vote Added") .

您可能想使用 Console.WriteLine("您的消息");此外,但我不确定,您似乎正在获取转换标签,这可能不是您想要做的