Как сохранить GameObject с несколькими Children в Prefab непосредственно во время игры
Есть скрипт рисования спрайтами по изображению, после нажатия кнопки, то что нарисовали превращается в 3д объекты, сферы. Которые сохраняют позицию спрайтов и становятся детьми пустого объекта. Нужно сохранить этот объект в префаб.
Код рисования:
public class Paint : MonoBehaviour {
public SpriteRenderer brush;
public Color brushColor = Color.red;
[Range(0.1f, 0.5f)] public float brushSize = 0.05f;
public Camera cameraRT;
public int sizeRT = 1024;
public MeshRenderer canvasObject;
public MeshRenderer planeRT;
private RenderTexture renderTexture;
void Awake()
{
position.z = brush.transform.position.z;
}
void Update()
{
if(Input.GetMouseButton(0))
{
brush.gameObject.SetActive(true);
Draw();
}
}
void Draw()
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
SpriteRenderer s = Instantiate(brush) as SpriteRenderer;
Vector2 uv = new Vector2(hit.textureCoord.x, hit.textureCoord.y);
position.x = uv.x - cameraRT.orthographicSize;
position.y = uv.y - cameraRT.orthographicSize;
s.color = brushColor;
s.transform.localPosition = position;
s.transform.localScale = Vector3.one * brushSize;
s.transform.parent = planeRT.transform;
counter++;
}
}}
Код Сохранения(он же отвечает за замену нарисованного на сферы):
public class GameobjectSaver : MonoBehaviour
{
public GameObject spherePrefab;
public Transform parent;
public Transform newParent;
public void Test()
{
foreach (Transform t in parent)
{
GameObject g = Instantiate(spherePrefab, newParent);
g.transform.position = t.position;
Destroy(t.gameObject);
}
}}