无法将类型对象隐式转换为unityengine.Vector3

时间:2013-07-03 08:14:18

标签: c# unity3d

我想在场景上放置六个物体(球)。我认为代码看起来可行但我收到了一个控制台消息。消息:

  

"资产/ GameScripts / Instance.cs(26,40):错误CS0266:不能   隐式转换类型object' to UnityEngine.Vector3'。一个明确的   转换是否存在(您是否错过了演员表?)"

使用UnityEngine; 使用System.Collections;

public class Instance:MonoBehaviour {     公共GameObject球;

public ArrayList coordinateContainer = new ArrayList();



// Use this for initialization
void Start () {

    coordinateContainer.Add(new Vector3(1f,1f,1f));
    coordinateContainer.Add(new Vector3(2f,1f,1f));
    coordinateContainer.Add(new Vector3(3f,1f,1f));
    coordinateContainer.Add(new Vector3(4f,1f,1f));
    coordinateContainer.Add(new Vector3(5f,1f,1f));
    coordinateContainer.Add(new Vector3(6f,1f,1f));


    //ball.transform.position = new Vector3(1f,1f,1f);
    ball.transform.rotation = Quaternion.identity;

    for (int i = 0; i <  6; i++) {
        ball.transform.position = coordinateContainer[i];
        Instantiate(ball,ball.transform.position,ball.transform.rotation);
    }
}

// Update is called once per frame
void Update () {

}

}

1 个答案:

答案 0 :(得分:4)

由于您使用ArrayList,因此向量将存储为objects。试试这个

ball.transform.position = (Vector3)coordinateContainer[i];

使用List<Vector3>而不是ArrayList可能会更好,这样就可以避免转换(因为List<T>只能保存T类型的对象。)