#разработка_игр #unity3d
В самом Unity, когда запускаю игру все нормальное сохраняет, а когда скомпилировал в .exe, то никуда не сохраняет, как исправить? Чтобы сохраняло уже при скомпилированной игре using UnityEngine; using System.Collections; using System.IO; public class GetName : MonoBehaviour { public string filename = ""; public Name Char; public string playerName; // Use this for initialization void Start () { filename = "PlayerName.txt"; } // Update is called once per frame void Update () { } void OnGUI() { Name Namest = (Name)Char.GetComponent("Name"); GUI.Label(new Rect(10, 110, 90, 100), "Your name:"); playerName = GUI.TextField(new Rect(90, 110, 100, 20), playerName); if (GUI.Button(new Rect(200, 110, 50, 20), "Save")) { StreamWriter sw = new StreamWriter("PlayerName.txt"); sw.WriteLine(playerName); sw.Close(); } } }
Ответы
Ответ 1
Попробуйте отловить исключение, мне кажется, что оно создаёт вам проблемы. Так же, советую использовать AppDomain для обработки необработанных исключений. Не советую сохранять файл таким способом, укажите более конкретный путь вашему файлу. Попробуйте загрузить файл из кода и узнайте его путь, возможно он сериализируется в каком то другом пути. Например в папке Temp. Так же используйте класс Application и его свойства persistentDataPath, streamingAssetsPath.Ответ 2
Возможные проблемы при сохранении: происходит ли у вас исключительная ситуация? Если происходит - "отловите" ее и ищите решение для нее. происходит сохранение, но в другое место. Попробуйте для теста указать полный путь в нужную директорию и убедитесь происходит ли сохранение в нее (предворительно убедитесь, что в данную директорию есть разрешение на запись). особенности места сохранения для разных платформ. Попробуйте в пути сохранения указать еще и Application.persistentDataPath.Ответ 3
Попробуйте сохранить файл в другом месте. например StreamWriter sw = new StreamWriter(@"C:/PlayerName.txt"); // для ПК либо так, для различных платформ (win, macos, ios, android и т.д.) StreamWriter sw = new StreamWriter(Application.persistentDataPath + @"/PlayerName.txt"); Последний вариант оптимальный и правильный будет если расчитываете на различные платформы собирать проект. В общем вот.
Комментариев нет:
Отправить комментарий