欢迎光临散文网 会员登陆 & 注册

Up自制Unity预制脚本dataStore.cs

2023-04-03 15:21 作者:拥抱大自然  | 我要投稿

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using System.IO;

using System.Text;



public class dataStore:MonoBehaviour

{


    public List<string> goSave = new List<string>();


    public List<string> goLoad = new List<string>();


    public string path = @"e:\testSave.txt";



    void Start()

    {

        

    }


    void Update()

    {

        if (Input.GetKeyDown(KeyCode.F8))

        {

            collectData();

            saveData();

            //存盘操作

        }


        if (Input.GetKeyDown(KeyCode.F9))

        {

            goLoad.Clear();

            loadData();

            resetPicPosition();       

            //读盘操作

        }

    }



    void collectData()

    {

        //收集图片位置以及旋转和是否有重力的数据

        int picNum = transform.childCount;

        goSave.Clear();


        for (int i = 0; i < picNum; i++)

        {

            goSave.Add(transform.GetChild(i).transform.name+";"+ transform.GetChild(i).transform.position+";"+ transform.GetChild(i).transform.eulerAngles+";"+ transform.GetChild(i).GetComponent<Rigidbody>().useGravity);                        

        }


    }


    void saveData()

    {        

        //存盘操作

        if (File.Exists(path))

        {

            File.Delete(path);

        }

        using(FileStream fs_write = File.Create(path))

        {

            StreamWriter sw = new StreamWriter(fs_write, Encoding.UTF8);

            int picNum = transform.childCount;

            for(int i=0; i<picNum; i++)

            {

                sw.WriteLine(goSave[i]);

            }                        

            sw.Close();

        }

    }


    void loadData()

    {

        //读盘操作

        FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None);

        StreamReader sr = new StreamReader(fs);

        string str = "";

        while (str != null)

        {

            str = sr.ReadLine();

           

            if (str != null)

            {

                goLoad.Add(str);

            }

            else 

            {

                break; 

            }

        }

        sr.Close();

    }


    void resetPicPosition()

    {

        //重置图片位置为保存的位置

        foreach(string i in goLoad)

        {

            string[] split = i.Split(new char[] { ';' });


            transform.Find(split[0]).position = StringToVector3(split[1]);


            transform.Find(split[0]).eulerAngles = StringToVector3(split[2]);


            transform.Find(split[0]).GetComponent<Rigidbody>().useGravity = bool.Parse(split[3]);


        }        

    }



    public static Vector3 StringToVector3(string temp)

    {

        //字符串转为向量

        if (temp.StartsWith("(") && temp.EndsWith(")"))

        {

            temp = temp.Substring(1, temp.Length - 2);

        }                

        string[] sArray = temp.Split(',');

                

        Vector3 result = new Vector3(float.Parse(sArray[0]), float.Parse(sArray[1]), float.Parse(sArray[2]));


        return result;

    }



}


Up自制Unity预制脚本dataStore.cs的评论 (共 条)

分享到微博请遵守国家法律