Я хочу разместить на сцене шесть объектов (мяч). Я думаю, что код выглядит работоспособным, но я получаю консольное сообщение. Сообщение:
"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 () {
}
} }
Поскольку вы используете ArrayList
векторы хранятся как objects
. Попробуй это
ball.transform.position = (Vector3)coordinateContainer[i];
Вы можете быть лучше с List<Vector3>
вместо ArrayList, чтобы избежать кастинга (поскольку List<T>
может содержать только объекты типа T
).
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".List<T>
потому что вы перебираете все объекты вcoordinateContainer
Vector3
и если он не может быть приведен к объектуVector3
то будетVector3
исключение.