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ć
Quady, czyli?
Co chcesz konkretnie zapisać, ich pozycje, rotacje, skale? Jakieś dołączone skrypty?
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;
}
}
}
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.
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