如何在 Unity 中重新加入破碎的对象?

Posted

技术标签:

【中文标题】如何在 Unity 中重新加入破碎的对象?【英文标题】:How to rejoin the shattered objects in Unity? 【发布时间】:2020-05-17 18:11:17 【问题描述】:

我在重新加入统一体中的破碎物体时遇到问题。

    第一次我用枪打碎了许多物体。 现在我想重新加入我之前打破的所有破碎物体(有点修复它)。

请帮我解决这个问题

【问题讨论】:

能否提供物体破碎的相关代码? using System.Collections using System.Collection.Genereic; using UnityEngine; public class Destructible : MonoBehaviour public GameObject destroyedVersion; void OnMouseDown () Instantiate(destroyedVersion, transform.position, transform.rotation); Destroy(gameObject); 【参考方案1】:

考虑不完全销毁游戏对象,而只是将其设置为非活动状态,并将对它的引用存储在其他地方:

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);
        
    

还有另一种方法,它可能更易于维护,是给出原始对象——例如建筑——某种能量水平或完整的布尔值,当它被摧毁时,你会改变它的外观和行为。

祝你好运!

【讨论】:

以上是关于如何在 Unity 中重新加入破碎的对象?的主要内容,如果未能解决你的问题,请参考以下文章

Unity 3d 模型在手机上支离破碎

unity 实现物体破碎效果的一些方法

unity 实现物体破碎效果的一些方法 - 细雨淅淅

Unity - 单击重新启动按钮后如何重新启动乐谱?

如何在 Unity 中从 3D 对象中获取 2D 视图/纹理

如何在 Blender 中从 Unity 重新创建模型的姿势?