簡體   English   中英

錯誤“ InvalidCastException:無法從源類型轉換為目標類型。”在Unity中使用實例化時

[英]Error “InvalidCastException: Cannot cast from source type to destination type.” While using Instantiate in Unity

好的,所以我正在統一制作2D游戲,當我運行代碼時,出現以下錯誤:

InvalidCastException: Cannot cast from source type to destination type.
ToastSpawn.spawnToast () (at Assets/Scripts/ToastSpawn.js:11)

ToastSpawn.js文件中的代碼如下:

#pragma strict

var Toast : Rigidbody;
var ToastSpawner : GameObject;

function Start() {
    InvokeRepeating("spawnToast", 3, 1);
}

function spawnToast() {
    var toastClone = Instantiate(Toast, GameObject.Find("ToastSpawner").transform.position, Quaternion.identity);
    toastClone.AddForce(Vector2 (0,1) * 1000);
}

我昨天才剛開始使用unity,所以這可能就是為什么我得到這個錯誤。 :)

您試圖在Rigidbody類型的對象(Toast:Rigidbody)上使用Object.Instantiate ,它是一個組件,而不是GameObject。 只能使用GameObject.AddComponent將組件添加到現有的GameObject中 您需要為Toast項目創建一個預制件(該預制件上具有剛體組件),並在Instantiate方法中使用該預制件。

另外,您不應在屬性名稱上使用大寫字母。

好吧,如果您從C#開始學習會更好::P盡管我不是JavaScript專家,但仍然可以看到一些故障。

  • 您實際上是在實例化Rigidbody,而不是GameObject。 以GameObject代替Rigidbody,然后從該對象獲取Rigidbody的Component以便施加力。
  • 您將ToastSpawner作為GameObject,為什么還是使用GameObject.Find? 就是那個相同的GameObject。

就像是,

var Toast : GameObject;
var ToastSpawner : GameObject;
...
... 
var toastClone = Instantiate(Toast, ToastSpawner.transform.position, Quaternion.identity);
var rb : Rigidbody = toastClone.GetComponent("Rigidbody");
rb.AddForce(...);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM