好的,所以我正在制作一个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,所以这可能就是我收到此错误的原因。 :)
答案 0 :(得分:0)
您正在尝试在Rigidbody类型对象(Toast:Rigidbody)上使用Object.Instantiate,它是一个组件,而不是GameObject。只能使用GameObject.AddComponent将组件添加到现有的GameObject中。您需要为Toast项目创建一个预制件(此预制件上有一个Rigidbody组件)并在Instantiate方法中使用预制件。
另外,你不应该在属性的名称上使用大写字母。
答案 1 :(得分:0)
嗯,如果你从C#开始会更好:P虽然我不是一个JavaScript人,但仍然可以看到一些故障。
类似的东西,
var Toast : GameObject;
var ToastSpawner : GameObject;
...
...
var toastClone = Instantiate(Toast, ToastSpawner.transform.position, Quaternion.identity);
var rb : Rigidbody = toastClone.GetComponent("Rigidbody");
rb.AddForce(...);