c# - 如何在 Unity 中重新加入破碎的对象?
问题描述
我在重新加入统一中的破碎物体时遇到问题。
- 第一次我用枪统一粉碎了许多物体。
- 现在我想重新加入我之前打破的所有破碎的物体(修复它)。
请帮我解决这个问题
解决方案
考虑不要完全销毁游戏对象,而只是将其设置为非活动状态,并将对它的引用存储在其他地方:
public class Destructible : MonoBehaviour
{
// Class based on your code sample above.
public GameObject destroyedVersion;
void OnMouseDown()
{
GameObject destroyedObject = Instantiate(
destroyedVersion, transform.position, transform.rotation);
Destroyed destroyed = destroyedObject.GetComponent<Destroyed>();
destroyed.SetOrigin(this);
gameObject.SetActive(false);
}
}
public class Destroyed : MonoBehavior
{
Destructible destructible = null;
public void SetOrigin(Destructible destructible)
{
this.destructible = destructible;
}
// This method can now be called from anywhere to rebuild:
public void RebuildOrigin()
{
if (destructible != null)
{
destructible.gameObject.SetActive(true);
Destroy(gameObject);
}
}
}
还有一种方法,它可能更易于维护,是给原始对象——例如建筑——一个能量级别或某种完整的布尔值,当它被破坏时,你会改变它的外观和行为。
祝你好运!
推荐阅读
- angular - Angular 应用程序的 E2E 测试中的隐式等待
- ios - 在 OpenGLES 或 Metal 中的着色器之后绘制线条
- python - 如何在 python 中将这些字符串与正则表达式匹配
- asp.net - CharJs 使用 Razor
- xml - xsltproc合并xml文件不起作用
- jenkins - 检查 Jenkins 节点是否为作业在线,否则发送电子邮件警报
- python - Python:转换日期时间格式
- angular - 使用 Angular 材质创建移动底部导航
- linux-kernel - 如何在 linux 中查看和跟踪与子系统相关的内核更改,比如 I2C
- unity3d - Unity - 儿童旋转和缩放错误