首页 > 解决方案 > 查找所有附加了通用脚本的活动/非活动游戏对象

问题描述

我正在尝试查找添加了公共脚本的所有活动和非活动游戏对象。我能够找到所有活动的游戏对象,但不幸的是,我的脚本没有查看非活动的游戏对象。我该如何克服呢?

public myScript[] commonScripts;

void Start() {
 commonScripts = FindObjectsOfType(typeof(myScript)) as myScript[];
}

标签: c#unity3d

解决方案


如果myScript是您的 C# 脚本之一,我会使用static list包含所有实例的。

示例代码

using System.Collections.Generic;
using UnityEngine;

public class MyScript : MonoBehaviour
{
    public static List<MyScript> allObjects = new List<MyScript>();

    private void Start()
    {
        if (allObjects.Contains(this) == false)
            allObjects.Add(this);
    }

    private void OnDestroy()
    {
        if (allObjects.Contains(this))
            allObjects.Remove(this);
    }
}

您可以在任何其他类中使用它,如下所示

using UnityEngine;

public class AnotherScript : MonoBehaviour
{
    private void AnyFunction()
    {
        foreach (MyScript ms in MyScript.allObjects)
        {
            // do whatever you want
        }
    }
}

推荐阅读