c# - 查找所有附加了通用脚本的活动/非活动游戏对象
问题描述
我正在尝试查找添加了公共脚本的所有活动和非活动游戏对象。我能够找到所有活动的游戏对象,但不幸的是,我的脚本没有查看非活动的游戏对象。我该如何克服呢?
public myScript[] commonScripts;
void Start() {
commonScripts = FindObjectsOfType(typeof(myScript)) as myScript[];
}
解决方案
如果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
}
}
}
推荐阅读
- sql - 基本 SQL 查询协助
- python - 如何使用间隔索引向熊猫数据框添加一行
- javascript - 从 Form 创建一个对象数组
- c++ - 声明期间的 C++ 赋值运算符
- sql - SSMS 能够与 localhost\foo 连接,但不能仅与 localhost 连接
- javascript - 如何根据月份和日期对该数组进行排序?
- delphi - 德尔福 10.4 和印地 9
- python - 无法解析 QGIS 中的函数
- apache-kafka - 在 Kafka 中,如何找到给定开始日期和结束日期(或说时间戳)之间所有分区的偏移量并重播 msgs
- reactjs - 如何在 google-map-react 中传递道具数据