查找附加到多个gameObjects的通用脚本?

时间:2019-05-07 15:05:42

标签: c# unity3d

我有一个已附加到多个gameObjects上的脚本,正在另一个脚本中引用此脚本。但是,当引用时,仅访问一个gameObject而不是全部访问。 如何访问所有使用此脚本的游戏对象?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CheckForGrab : MonoBehaviour {

    private OVRGrabber grabber; //the script I try to access
    // Use this for initialization
    void Start () {
        grabber = (OVRGrabber) FindObjectOfType(typeof(OVRGrabber)); // the gameObject the script is attached to
    }
}

2 个答案:

答案 0 :(得分:4)

如果想要多个结果,则必须查询多个实例。显然。

尝试FindObjectsOfType。注意“ s”。


此外,在这种情况下,请使用泛型而不是强制转换。

grabbers = FindObjectsOfType<OVRGrabber>();
grabber = grabbers[index];

答案 1 :(得分:0)

使用:使用FindObjectsOfType(typeof(OVRGrabber)代替FindObjectOfType(typeof(OVRGrabber)

s很重要。

您的代码将是这样:

private OVRGrabber[] grabbers; 
private OVRGrabber grabber;

// Use this for initialization
void Start () {
    grabbers = (OVRGrabber) FindObjectsOfType(typeof(OVRGrabber)); 

    grabber = grabbers[0]; //iterate if you want to do stuffs with everyone of them

}