当 GameObject 触发时在 Unity 控制台中打印消息? Unity5/2D
Print message in Unity console when a GameObject hits a trigger? Unity5/2D
我正在为学校做一个 "Game",我需要统计选票。我正在使用 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,并在控制台中显示消息 "One Vote Added",但事实并非如此.我做错了什么?
更新了代码
现在使用 OnCollisionEnter2D,但仍然无法正常工作。我还缺少什么?
您可能想要使用 Console.WriteLine("Your message");
此外,但我不确定,你似乎得到了你的转换标签,这可能不是你想要做的
假设 Unity 可能不支持标准的 .NET BCL,您可能需要查看 Unity 的控制台“日志”功能:
或者寻找合适的日志记录解决方案,例如 NLog。
如果要在控制台的同一行中打印不同的字符串,请使用Console.Write("One vote Added")
。
如果每次写入控制台时都需要换行,请使用 Console.WriteLine("One Vote Added")
.
由于 print
是在 MonoBehaviour
中定义的用于打印到 Unity 控制台的方法,我将假设您实际上是在 Unity 控制台中寻找输出,但什么也没有正在出现。这意味着 OnTriggerStay
没有被调用,或者碰撞器的根没有 PlayerObject
标签。
OnTriggerStay
当 3D 物理体位于触发器内部时调用。确保 vote GameObject 上有 Vote1 组件,并且其碰撞器已 "Is Trigger" 检查。
还要确保对象具有物理体和对撞机,后者不是触发器。对象的根变换(即层次结构中没有任何父项的变换)应该有 PlayerObject
标签。如果播放器在父容器内,则 transform.root
将获得该父容器而不是播放器本身。
此外,请确保两个项目之间的碰撞未通过“编辑”->“项目设置”->“物理”->“图层碰撞矩阵”过滤掉。
最后,确保一切都已启用!
注意:您正在使用 OnTriggerStay
,当玩家处于触发器中时,每帧会被击中一次。如果您没有某种机制在投票后移除玩家,那么他们将每秒添加 30-60 票,具体取决于 FPS。
我正在为学校做一个 "Game",我需要统计选票。我正在使用 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,并在控制台中显示消息 "One Vote Added",但事实并非如此.我做错了什么?
更新了代码
现在使用 OnCollisionEnter2D,但仍然无法正常工作。我还缺少什么?
您可能想要使用 Console.WriteLine("Your message"); 此外,但我不确定,你似乎得到了你的转换标签,这可能不是你想要做的
假设 Unity 可能不支持标准的 .NET BCL,您可能需要查看 Unity 的控制台“日志”功能:
或者寻找合适的日志记录解决方案,例如 NLog。
如果要在控制台的同一行中打印不同的字符串,请使用Console.Write("One vote Added")
。
如果每次写入控制台时都需要换行,请使用 Console.WriteLine("One Vote Added")
.
由于 print
是在 MonoBehaviour
中定义的用于打印到 Unity 控制台的方法,我将假设您实际上是在 Unity 控制台中寻找输出,但什么也没有正在出现。这意味着 OnTriggerStay
没有被调用,或者碰撞器的根没有 PlayerObject
标签。
OnTriggerStay
当 3D 物理体位于触发器内部时调用。确保 vote GameObject 上有 Vote1 组件,并且其碰撞器已 "Is Trigger" 检查。
还要确保对象具有物理体和对撞机,后者不是触发器。对象的根变换(即层次结构中没有任何父项的变换)应该有 PlayerObject
标签。如果播放器在父容器内,则 transform.root
将获得该父容器而不是播放器本身。
此外,请确保两个项目之间的碰撞未通过“编辑”->“项目设置”->“物理”->“图层碰撞矩阵”过滤掉。
最后,确保一切都已启用!
注意:您正在使用 OnTriggerStay
,当玩家处于触发器中时,每帧会被击中一次。如果您没有某种机制在投票后移除玩家,那么他们将每秒添加 30-60 票,具体取决于 FPS。