2013-07-03 89 views
2

我想在場景中放置六個對象(球)。我認爲代碼看起來可行,但我收到一個控制檯消息。消息:不能將類型對象轉換爲unityengine.Vector3

「資產/ GameScripts/Instance.cs(26,40):錯誤CS0266:無法 類型隱式轉換object' to UnityEngine.Vector3' 一個明確的 轉換不存在(是否缺少強制轉換?) 「

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

} 

}

回答

4

由於您使用的ArrayList向量被存儲爲objects。試試這個

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

您可以與List<Vector3>,而不是一個ArrayList更好,這樣就可以避免在鑄件(如List<T>只能容納T類型的對象)。

+0

Assets/GameScripts/Instance.cs(26,74):錯誤CS0077:'as'操作符不能用於非空值類型'UnityEngine.Vector3'' - 當我嘗試「作爲Vector3「。 –

+0

@HalilCosgun - 我已經更新了使用直接投射的答案。這是使用'List '的另一個很好的理由,因爲您正在循環遍歷'coordinateContainer'中的所有對象,並且如果它不能轉換爲'Vector3'對象,則會拋出異常。 – keyboardP

+0

非常感謝。 :) 有用。感謝您的建議,我將使用List。 –

相關問題