Javascript “错误”;InvalidCastException:无法从源类型强制转换为目标类型;在Unity中使用实例化时

Javascript “错误”;InvalidCastException:无法从源类型强制转换为目标类型;在Unity中使用实例化时,javascript,unity3d,Javascript,Unity3d,好的,我在unity中制作了一个2D游戏,当我运行代码时,我得到以下错误: InvalidCastException: Cannot cast from source type to destination type. ToastSpawn.spawnToast () (at Assets/Scripts/ToastSpawn.js:11) 文件toastpawn.js中的代码如下: #pragma strict var Toast : Rigidbody; var ToastSpawner

好的,我在unity中制作了一个2D游戏,当我运行代码时,我得到以下错误:

InvalidCastException: Cannot cast from source type to destination type.
ToastSpawn.spawnToast () (at Assets/Scripts/ToastSpawn.js:11)
文件toastpawn.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,所以这可能就是我出现此错误的原因。:)

您试图在刚体类型的对象(Toast:Rigidbody)上使用,该对象是组件,而不是游戏对象。只能使用将组件添加到现有游戏对象中。您需要为Toast项创建一个预置(该预置上有一个刚体组件),并在实例化方法中使用该预置


另外,您不应该在属性的名称上使用大写字母。

好吧,最好从C#:p开始,尽管我不是JavaScript高手,但仍然可以看到一些小故障

  • 你实际上是在实例化刚体而不是游戏对象。取游戏对象,而不仅仅是刚体,然后从该对象获取刚体的分量,以便施加力
  • 您必须将ToastSpawner作为GameObject,那么为什么或者您使用GameObject.Find?就是那个游戏对象
大概

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

我有一个烤面包房。如何将其用于实例化?Unity文档中有一个Unity脚本示例:将变量public设置为通过inspector链接预置,然后在实例化函数中使用它。仅供参考,您需要忘记“javscript”,只使用c。团结很快就会消失;而且c#实际上要容易得多。忘记javascript,只使用c#这个网站不适合关于“如何使用变量”等非常简单的问题。我已经将其应用到我的代码中,现在我得到了这个错误:
Assets/Scripts/toastspewn.js(13,8):BCE0019:“AddForce”不是“UnityEngine.Component”的成员。
代码在这里:
#pragma-strict-var-Toast:GameObject;var ToastSpawner:游戏对象;函数Start(){InvokeRepeating(“spawntoos”,3,1);}函数spawntoos(){var toastClone=实例化(Toast,Vector3(0,-2,0),Quaternion.identity);var rb=toastClone.GetComponent(“刚体”);rb.AddForce(Vector3.up*1000);}
这就是我讨厌javascript的原因。替换
var rb=toastClone.GetComponent(“刚体”)
to
var rb:Rigidbody=toastClone.GetComponent(“刚体”)。查看编辑后的答案昨晚我决定将toast移错了,所以我制作了一个新脚本来处理AddForce()函数:P在我修改了你的答案后,现在效果很好。谢谢!:)