Unity - 当场景中有多个预制件时,Raycast 无法正常工作

Unity - Raycast not working when more than one prefab on Scene

我创建了一个使用 RayCasting 检测两个预制件的脚本 - 一个预制件有一个名为 "target" 的标签,第二个预制件有一个名为 "unTarget" 的标签。单击带有 "Target" 标记的预制件 1 时,它应该增加计数,而当单击带有 "unTarget" 标记的预制件 2 时,它应该减少计数。当场景中只有一个预制件时,这似乎有效。当只添加并单击时,它将 increment/decrement。当两个预制件都在场景中时,两个预制件都会增加。我不确定为什么会这样。任何帮助或想法?对不起,如果我的代码有点乱。

using UnityEngine;
using System.Collections;

public class clicks : MonoBehaviour 
{

    public int score;  

    void Start()
    {
        score = 0;
    }

    // Update is called once per frame
    void Update() 
    { 
        if (Input.GetMouseButtonDown (0)) 
        {

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit,200))
            {
                if (GameObject.FindGameObjectWithTag ("target"))
                {
                    score++;
                }
                else 
                {
                    score--;
                }
            }
      }
}   

GameObject.FindGameObjectWithTag 方法将在整个场景中查找以 target 作为标记的对象。因为你在场景中有一个总是 return true,如果你撞到什么东西。

您需要查看 RaycastHit 上的属性并从那里提取标签。

if (hit.collider.tag == "target") 
{
   score++;
} 
else 
{
   score--;
}