Unity3D, C # Как сохранить положение объектов и перезапустить их позже? - PullRequest
1 голос
/ 20 марта 2019

Уважаемое сообщество StackOverFlow,

Мне снова нужна ваша помощь в области сохранения текущей позиции объектов в массиве.Мне нужно сохранить его, потому что я хочу, чтобы перезапустить уровень и их объект для начала позиции.Я понятия не имею, как я могу это сделать .. Это мой код объектов, и они движутся по ходу игры, поэтому мне нужно сохранить положение объектов ..

Это мой код для перемещения объекта иэтот код присутствует во всех движущихся объектах.

public class ObjectController : MonoBehaviour {

    public bool moving = false;
    public float speed = 1f;

    private bool signaledToMove = false;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void FixedUpdate () {
        if( moving && signaledToMove ){
            this.GetComponent<Rigidbody>().AddForce( Vector3.back * 250 * speed );
        }

        // Destroy object to save perforomance, if it got out of the scene.
        if( this.gameObject.transform.position.z < -520  || 
           this.gameObject.transform.position.y < -20 )
            Destroy(this.gameObject);
    }

    public void SignalToMove(){
        this. signaledToMove  = true;
    }


}

Большое спасибо за помощь.

1 Ответ

3 голосов
/ 20 марта 2019

Поскольку ваши объекты MonoBehaviours вы можете использовать

ObjectController[] cs = FindComponentsOfType<ObjectController>();

Редактировать: вы также должны вызывать это из MonoBehaviour!

Я не знаю точно, что вы имеете в виду под "перезапустить их позже", если вы хотите сохранить его на жестком диске:

Вы можете использовать Json! для этого у вас должны быть все сохраняемые данные в таких структурах, как:

struct DataStruct { Vector3[] positions }
DataStruct data =  (insert your data here);
string dataString = JsonUtility.ToJson<DataStruct>();
// this saves the struct on the hdd
System.IO.File.WriteAllText(your data path);
// this reads the file
string datareconstructed = System.IO.File.ReadAllText(path);

// this struct will contain all the previously saved data
// you just need to set the positions from it to you objects again
DataStruct dataReco = JsonUtility.FromJson<DataStruct>(datareconstructed)

это не будет компилироваться, вам нужно подогнать это под ваши данные и так, но я надеюсь, что дал вам хорошую отправную точку!

...