Невозможно скрыть преобразование объекта типа в unityengine.Vector3

2

Я хочу разместить на сцене шесть объектов (мяч). Я думаю, что код выглядит работоспособным, но я получаю консольное сообщение. Сообщение:

"Assets/GameScripts/Instance.cs(26,40): ошибка CS0266: Невозможно неявно преобразовать object' to типа object' to UnityEngine.Vector3 ". Явное преобразование существует (вы пропускаете листинг?)"

использование UnityEngine; используя System.Collections;

открытый класс. Экземпляр: MonoBehaviour {public GameObject ball;

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 () {

}
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 () {

}

} }

Теги:
unity3d

1 ответ

4
Лучший ответ

Поскольку вы используете ArrayList векторы хранятся как objects. Попробуй это

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

Вы можете быть лучше с List<Vector3> вместо ArrayList, чтобы избежать кастинга (поскольку List<T> может содержать только объекты типа T).

  • 0
    'Assets / GameScripts / Instance.cs (26,74): ошибка CS0077: as' operator cannot be used with a non-nullable value type необнуляемым as' operator cannot be used with a non-nullable value type UnityEngine.Vector3 '' - я получаю это сообщение, когда я пытаюсь "как Vector3".
  • 0
    @HalilCosgun - я обновил ответ, чтобы использовать прямое приведение. Это еще одна веская причина для использования List<T> потому что вы перебираете все объекты в coordinateContainer Vector3 и если он не может быть приведен к объекту Vector3 то будет Vector3 исключение.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню