C# 我想在另一个被破坏的对象的位置实例化一个对象

C# 我想在另一个被破坏的对象的位置实例化一个对象,c#,unity3d,C#,Unity3d,我正在销毁两个对象,当它们被销毁时,我希望在同一位置实例化一个对象 public class GameManager : MonoBehaviour { public static GameManager instance; public GameObject prefab; public void Awake() { instance = this; } public void Update() { C

我正在销毁两个对象,当它们被销毁时,我希望在同一位置实例化一个对象

public class GameManager : MonoBehaviour
{
    public static GameManager instance;
    public GameObject prefab;

    public void Awake()
    {
        instance = this;
    }

    public void Update()
    {
        Check();
    }

    public void Check()
    {
        if (MagnetBehaviour.instance.isConnected == true)
        {
            Debug.Log("Check");
            MagnetBehaviour.instance.isConnected = false;
            Instantiate(prefab);

            Debug.Log(MagnetBehaviour.instance.isConnected);
        }
    }
}

您必须在对象被销毁之前缓存其位置,并实例化要使用缓存位置生成的对象。以下脚本仅适用于position。(未经测试)

公共类游戏管理器:单一行为
{
公共静态GameManager实例;
公开的游戏对象;
公共游戏对象;典当;
公开作废开始()
{
销毁和繁殖(预制到销毁,预制到典当);
}
公共空间销毁和繁殖(游戏对象预制到销毁,游戏对象预制到典当)
{
Vector3 position=PrefactToDestroy.transform.position;
销毁(预制件销毁);
实例化(预设棋子、位置、四元数.Identity);
}
}

如果您希望生成的对象与销毁的对象具有相同的旋转,还可以缓存旋转并用此旋转替换四元数。标识。

您应该在问题中澄清您使用的是Unity3D,并且您所指的对象是Unity3D中的游戏对象

在调用Destroy(myGameobject)的代码中,还可以实例化所需的新游戏对象

像这样的

公共游戏对象myNewGameObjectPrefab//将预制件拖到inspector中的此处
作废销毁和创建(游戏对象myGameObject)
{
GameObject newObj=实例化(myNewGameObjectPrefab,myGameobject.transform.position);
销毁(myGameobject);
}

您可以将这样的脚本附加到要销毁的对象上

using UnityEngine;

public class DestroyableObject : MonoBehaviour
{
    public bool Destroyed { get;  set; }

    public Vector3 Position { get; set; }

    private void OnDestroy()
    {
        Position = transform.position;
        Destroyed = true;
    }
}
然后在代码中

public DestroyableObject obj1;
public DestroyableObject obj2;

public void Check()
{
    if (obj1.Destroyed && obj2.Destroyed)
    {
        Instantiate(prefab, obj1.Position, Quaternion.identity);
    }
}

你对“同一地点”的定义是什么?你如何“摧毁”这些物体?这两件事在.NET中通常都是无法控制的,因为管理这些细节在C风格的语言中几十年来一直是个问题。我当时正在摧毁这两个物体。当它们被销毁时,我想实例化一个对象,在这个对象中,这些对象被销毁了。那么,你到底有什么问题?你试过什么?我什么都没试过。因为我找不到一个开始的方法。但是对于主题:您的示例代码没有显示任何对我们有帮助的内容。如果您想对某个位置执行任何操作,则类需要具有表示该位置的属性。是吗?所以问题是。。我正在实例化将要销毁的对象。我应该如何缓存它的位置。基本上是相同的过程,只是在它被销毁之前使用对象的位置。如果使用另一个对象的位置或正在被破坏的对象的位置,则没有区别。重要的是在调用Destroy()之前保存对象的位置
public DestroyableObject obj1;
public DestroyableObject obj2;

public void Check()
{
    if (obj1.Destroyed && obj2.Destroyed)
    {
        Instantiate(prefab, obj1.Position, Quaternion.identity);
    }
}