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ć
Unity i zapisywanie obiektów
- Rejestracja: dni
- Ostatnio: dni
- Postów: 18
- Rejestracja: dni
- Ostatnio: dni
- Postów: 466
Quady, czyli?
Co chcesz konkretnie zapisać, ich pozycje, rotacje, skale? Jakieś dołączone skrypty?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 18
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;
}
}
}
- Rejestracja: dni
- Ostatnio: dni
- Postów: 466
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 18
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