如何在转换列表中添加GameObjects位置

时间:2019-01-08 17:17:45

标签: c# unity3d

我是团结的初学者,希望有人可以在这里帮助我。我有一些带有标签BtnCharacter的按钮,想要找到它们并将其位置添加到转换列表中。我猜可能是这样的:

public class Line : MonoBehaviour
{
public List<Transform> SaveList;
    void Start()
    {
        SaveList.Add(GameObject.FindGameObjectsWithTag("BtnCharacter").transform.position);
    }
}

但是调试器显示以下内容:

  

错误CS1061:“ System.Array”不包含“ transform”的定义,并且找不到扩展方法“ transform”接受类型为“ System.Array”的第一个参数(您是否缺少using指令或程序集参考?)(CS1061)(Assembly-CSharp)

2 个答案:

答案 0 :(得分:3)

$the_query = new WP_Query('year=' . $year . '&w=' . $lastweek );方法将所有具有给定标签的对象作为数组。您的GameObject.FindGameObjectsWithTagSaveList的列表,您正在尝试将数组添加到列表中。

必须像;

Transform

答案 1 :(得分:1)

首先,您是否真的需要一个通用列表,我的意思是一个简单的数组也可以工作。无论哪种方式,这些解决方案都应该有所帮助-

1)使用通用GameObject列表

public class Line : MonoBehaviour
{
    public List<GameObject> SaveList;
    void Start()
    {
        SaveList = new List<GameObject>(GameObject.FindGameObjectsWithTag("BtnCharacter"));
    }
}

2)使用通用Transform / Vector3列表:

在访问位置的第一种方法中,您必须添加一个额外的.transform.position

在此解决方案中,您将能够创建一个通用的Transform / Vector3列表来存储变换/位置,如果您需要存储变换,则创建一个变换列表,然后在此处创建Vector3列表,这是它的代码-< / p>

public class Line : MonoBehaviour
{
    public List<Vector3> SaveList;//use List<Transform> to create transform list
    void Start()
    {
        SaveList = new List<Vector3>();
        GameObject[] objectsWithTag = GameObject.FindGameObjectsWithTag("BtnCharacter");
        foreach(GameObject GO in objectsWithTag){
            SaveList.Add(GO.transform.position);//use GO.transform to add the transform in the list
        }
    }
}

3)自己使用数组,我认为最简单

public class Line : MonoBehaviour
{
    public GameObject[] SaveArray;
    void Start()
    {
        SaveArray = GameObject.FindGameObjectsWithTag("BtnCharacter");
    }
}

在第三种解决方案中,如果您想存储vector3或变换数组,然后尝试使用第二种解决方案中使用的方法,我也可以为其键入代码,但我希望您自己尝试以得到更好的理解。希望这个答案有帮助:)

是的,已存在文档,因此使用Google搜索或搜索或阅读文档确实可以帮助您信任我:)