C# 只记录一次,而不是记录对象的次数
我有9个3d立方体。每个多维数据集都有一个脚本组件,用于检查多维数据集是否被触摸。如果是这样,它会记录被触摸立方体的名称 want:多维数据集的名称记录一次。事实:多维数据集的名称记录了9次(每个多维数据集记录一次),这很有意义。。这与附加到所有9个多维数据集的脚本相同。请参见下面的脚本:C# 只记录一次,而不是记录对象的次数,c#,unity3d,C#,Unity3d,我有9个3d立方体。每个多维数据集都有一个脚本组件,用于检查多维数据集是否被触摸。如果是这样,它会记录被触摸立方体的名称 want:多维数据集的名称记录一次。事实:多维数据集的名称记录了9次(每个多维数据集记录一次),这很有意义。。这与附加到所有9个多维数据集的脚本相同。请参见下面的脚本: using System.Collections; using System.Collections.Generic; using UnityEngine; public class main: MonoB
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class main: MonoBehaviour
{
public string touchedObjectsName;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if ((Input.touchCount > 0) && (Input.GetTouch(0).phase == TouchPhase.Began))
{
Ray raycast = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
RaycastHit raycastHit;
if (Physics.Raycast(raycast, out raycastHit))
{
touchedObjectsName = raycastHit.collider.gameObject.name;
Debug.Log(touchedObjectsName);
}
}
}
}
问题:即使上面的脚本附加到多个游戏对象上,是否可以将其修改为只记录一次
谢谢,亲爱的社区 正如您自己所说:您的脚本正在所有9个多维数据集上运行 所以,你做了9次光线投射,9次总是击中同一个物体,并打印它的名字9次
当然,你可以简单地检查一下你是否击中了自己:
if (Physics.Raycast(raycast, out raycastHit))
{
// only do it if the hit object is the same as this script is attached to
if(raycastHit.gameObject == gameObject)
{
touchedObjectsName = raycastHit.collider.gameObject.name;
Debug.Log(touchedObjectsName);
}
}
但这是非常多余的=>没有效率
只在场景中的某个地方运行此脚本一次,因为它可以跟踪任何被触摸的对象,因此无需多次运行。谢谢!看起来我站在那里的水管上(就像德国人说的)。。。出于某种原因,我假设脚本需要附加到我要检查/光线投射到的游戏对象。从立方体中删除脚本并将其连接到主cam,现在可以按需要工作了。