Unity i zapisywanie obiektów

0

mam taki problem ...jestem początkujący i nie wiem jak zrobić prost system zapisu losowo wygenerowanych quadów (w pliku) ,a potem to odczytać

0

Quady, czyli?

Co chcesz konkretnie zapisać, ich pozycje, rotacje, skale? Jakieś dołączone skrypty?

0
MasterOf napisał(a):

Quady, czyli?

Co chcesz konkretnie zapisać, ich pozycje, rotacje, skale? Jakieś dołączone skrypty?

obiekty w unity
Zapisać je same

using UnityEngine;

public class Generator : MonoBehaviour
{
bool isClear = false;

public GameObject Dirt;
public GameObject CiemnyDirt;
public GameObject Kamien;

public GameObject trawa;
public GameObject trawa_01;
public GameObject trawa_02;

public GameObject Drzewo;

public GameObject Miedz;
public GameObject Wengiel;
public GameObject Srebro;
public GameObject Diament;
public GameObject Szmaragd;
public GameObject Rubin;
public GameObject Siarka;
public GameObject platyna;
public GameObject Magnez;
public GameObject cynk;
public GameObject Tytan;
public GameObject Uran;
public GameObject Krzemień;


public GameObject zelazo;

private string MapId;

public float smothnes;
public int wysokosc;
public int MapVelocity;

public float md;
public float wg;
public float fe;
public float sr;
public float dm;
public float sm;
public float ru;
public float si;
public float pla;
public float mag;
public float cn;
public float ty;
public float ur;
public float krz;

public float Drz;

[HideInInspector]
public float seed;
private float wysokośćMuliplay;

int trawa_bigset;

public int wysokoscwzgledna;

void Start()
{
    Seeding();
    Generate();

}

public void Seeding()
{
    trawa_bigset = Random.Range(0, 2);
    wysokosc = wysokosc * MapVelocity;
    wysokośćMuliplay = Random.Range(10f, 14f);
}
public void Generate()
{

    for (int i = 0; i < wysokosc; i++)
    {
        int h = Mathf.RoundToInt(Mathf.PerlinNoise(seed, (i + transform.position.x) / smothnes) * wysokośćMuliplay) + wysokoscwzgledna;
        for (int j = 0; j < h; j++)
        {
            GameObject selectedtitle;
            if (j < h - 14)
            {
                selectedtitle = Kamien;
            }
            else if (j < h - 2)
            {
                selectedtitle = CiemnyDirt;
            }
            else if(j < h -1)
            {
                selectedtitle = Dirt;
            }
            else
            {
                if(trawa_bigset == 0)
                {
                    selectedtitle = trawa;
                    trawa_bigset = Random.Range(0, 2);
                }
                else if(trawa_bigset == 1)
                {
                    selectedtitle = trawa_01;
                    trawa_bigset = Random.Range(0, 2);
                }
                else
                {
                    selectedtitle = trawa_02;
                    trawa_bigset = Random.Range(0, 2);
                }
            }


            GameObject newTitle = Instantiate(selectedtitle, Vector3.zero, Quaternion.identity) as GameObject;
            newTitle.transform.parent = this.gameObject.transform;
            newTitle.transform.localPosition = new Vector3(i, j);
        }
    }
    Populate();
}

public void Populate()
{
    foreach (GameObject t in GameObject.FindGameObjectsWithTag("Kamien-block"))
    {
        if (t.transform.parent == this.gameObject.transform)
        {
            float r = Random.Range(10f, 750f);
            GameObject selectedTile = null;

            if (r < md)
            {
                selectedTile = Miedz;
            }
            else { }
            if (r < wg)
            {
                selectedTile = Wengiel;
            }
            else { }
            if (r < sr)
            {
                selectedTile = Srebro;
            }
            else { }
            if (r < dm)
            {
                selectedTile = Diament;
            }
            else { }
            if (r < ru)
            {
                selectedTile = Rubin;
            }
            else { }
            if (r < sm)
            {
                selectedTile = Szmaragd;
            }
            else { }
            if (r < si)
            {
                selectedTile = Siarka;
            }
            else { }
            if (r < ty)
            {
                selectedTile = Tytan;
            }
            else { }
            if (r < pla)
            {
                selectedTile = platyna;
            }
            else { }
            if (r < mag)
            {
                selectedTile = Magnez;
            }
            else { }
            if (r < cn)
            {
                selectedTile = cynk;
            }
            else { }
            if (r < ur)
            {
                selectedTile = Uran;
            }
            else { }
            if (r < krz)
            {
                selectedTile = Krzemień;
            }
            else { }
            
            if (selectedTile != null)
            {
                GameObject newResourceTile = Instantiate(selectedTile, t.transform.position, Quaternion.identity) as GameObject;
                newResourceTile.transform.parent = transform;
                Destroy(t);
            }
            
        }

    }
    foreach (GameObject t in GameObject.FindGameObjectsWithTag("trawa"))
    {
        if (t.transform.parent == this.gameObject.transform)
        {
            float r = Random.Range(10f, 200f);
            GameObject selectedTile = null;

            if (r < Drz)
            {
                selectedTile = Drzewo;
            }
            else { }

            if (selectedTile != null)
            {
                GameObject newResourceTile = Instantiate(selectedTile, t.transform.position, Quaternion.identity) as GameObject;
                newResourceTile.transform.parent = transform;
                Destroy(t);
            }
        }
        
    }
}
private void OnRenderObject()
{
    if(isClear == false)
    {
        System.GC.Collect();
        isClear = true;
    }
    
}

}

0

O panie, po pierwsze, co to taki burdel. Nie lepiej np: stworzyć klasę "Block, w której będzie się zawierała string(nazwa), float(ten który masz do kazdego obiektu) oraz GameObject. Następnie zrobisz liste objektów klasy "Block". Ta brzydka czołówka zniknie i będziesz mógł w klasie "Block" napisać serializacje elementów.

0
MasterOf napisał(a):

O panie, po pierwsze, co to taki burdel. Nie lepiej np: stworzyć klasę "Block, w której będzie się zawierała string(nazwa), float(ten który masz do kazdego obiektu) oraz GameObject. Następnie zrobisz liste objektów klasy "Block". Ta brzydka czołówka zniknie i będziesz mógł w klasie "Block" napisać serializacje elementów.

okej,dzk

1 użytkowników online, w tym zalogowanych: 0, gości: 1