[英]Unity 'the object of type has been destroyed' error
我用这种方法在游戏中破坏了一个物体:
public override void triggerAction(GameObject cube)
{
base.triggerAction(cube);
if (cube.GetComponent<Cube>().type == type) {
DestroyObject(cube);
}
}
我得到了'The object of type 'Cube' has been destroyed but you are still trying to access it.'
指出此方法错误(第一行):
if (Physics.Raycast(gameObject.transform.position, rayDir, out hit, 1f) && (hit.collider.gameObject.layer == layerMask)) {
ActionObject obj = hit.collider.gameObject.GetComponent<ActionObject>();
obj.triggerAction(gameObject);
}
在“更新”循环中调用此方法。
我在网上看到我们必须测试gameobject是否不为null,但是当我测试它时,在以下情况下我遇到了相同的错误:
if (gameObject != null) { ... }
感谢您的回答!
编辑:这是我如何实例化我的对象=
public GameObject cube; // I put my prefab in the inspector
...
GameObject newCube = Instantiate(cube) as GameObject;
我解决了我的问题,这是对象上的委托方法,我刚刚删除了它。
我不确定,但是由于此方法是在Update
调用的,因此您可能试图两次破坏同一对象(实际上是组件)。
RayCast
调用仅考虑了对撞机,因此,当您从cube
对象中删除Cube
组件时,除非Cube
是对撞机,否则在下一帧中,同一对象仍然可以成为RayCast
的目标。 但是这次,该对象上没有任何Cube
组件,您将得到'The object of type 'Cube' has been destroyed but you are still trying to access it.'
错误。
要解决此问题,您可能需要检查对象Cube
组件是否为null,而不是其本身:
if (gameObject.GetComponent<Cube>() != null) { ... }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.