Javascript “错误”;InvalidCastException:无法从源类型强制转换为目标类型;在Unity中使用实例化时
好的,我在unity中制作了一个2D游戏,当我运行代码时,我得到以下错误: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
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(“刚体”)
tovar rb:Rigidbody=toastClone.GetComponent(“刚体”)代码>。查看编辑后的答案昨晚我决定将toast移错了,所以我制作了一个新脚本来处理AddForce()函数:P在我修改了你的答案后,现在效果很好。谢谢!:)