首页 > 解决方案 > 如何在Unity中通过标签从脚本中获取非实例化的预制件?

问题描述

我用这一行按标签查找所有预制件(这很重要,所以例如我可以创建一个全新的地面平台,它会自动出现在脚本中,而不必手动放入)

ObjectPool[] platformPools;
float[] platformWidths;

 void Start()
{
    var taggedObjects = Resources.FindObjectsOfTypeAll(typeof(GameObject)).Cast<GameObject>().Where(g => g.CompareTag("Prefabs")).ToArray();

    platformPools = new ObjectPool[taggedObjects.Length];

    platformWidths = new float[platformPools.Length];

    for (int i = 0; i < platformPools.Length; i++)
    {
        platformPools[i] = gameObject.AddComponent<ObjectPool>();
        platformPools[i].PooledObject = taggedObjects[i];
        platformWidths[i] = platformPools[i].PooledObject.GetComponent<BoxCollider2D>().size.x;
    }
}

问题是,这个脚本在计算机上调试时会找到每个平台,但是一旦我将它加载到手机上,它就只能找到其中一个。

标签: c#.netunity3d

解决方案


推荐阅读