#c# #unity3d #build #system.io.file
#c# #unity3d #сборка #system.io.file
Вопрос:
Во время выполнения я записываю входные данные, которые я хочу воспроизвести в сборке. Итак, я создаю текстовый файл в каталоге ресурсов, который я заполняю текстом во время выполнения с помощью StreamWriter. Содержимое остается там в режиме сцены после закрытия проекта, но не после его сборки и запуска. Я некоторое время искал в сети, но не нашел ничего, связанного с моей проблемой. Я попытался использовать папку StreamingAssets, но у меня тоже не получилось. Спасибо за любую помощь.
if (!Directory.Exists("Assets/Resources/Recordings"))
{
Directory.CreateDirectory("Assets/Resources/Recordings");
}
if (!File.Exists("Assets/Resources/Recordings/Challenge1.txt"))
{
File.WriteAllText("Assets/Resources/Recordings/Challenge1.txt", "");
}
Редактировать: переключатель (режим)
case Mode.Record:
oldSequence.init ();
currentSequence.init ();
inputRecordStream = new StreamWriter (FilePath, false); // will overwrite new file Stream
if (inputRecordStream.ToString () == "")
{
Stop ();
Debug.Log ("InputReplay: StreamWriter(" FilePath "), file not found ?");
return false;
}
else
{
inputRecordStream.AutoFlush = true;
SetInputStd ();
}
break;
Метод записи:
private void Record(float time)
{
currentSequence.init ();
currentSequence.t = time;
// store only true boolean
foreach (KeyCode vkey in System.Enum.GetValues(typeof(KeyCode)))
{
if (Input.GetKey (vkey))
currentSequence.gK.Add (vkey);
if (Input.GetKeyDown (vkey))
currentSequence.gKD.Add (vkey);
if (Input.GetKeyUp (vkey))
currentSequence.gKU.Add (vkey);
}
currentSequence.mP = Input.mousePosition;
currentSequence.mWP = Camera.main.ScreenToWorldPoint (currentSequence.mP);
currentSequence.mSD = Input.mouseScrollDelta;
foreach (string virtualAxis in AxisList)
currentSequence.vA.Add (Input.GetAxis (virtualAxis));
foreach (string ButtonName in ButtonList)
{
if (Input.GetButton (ButtonName))
currentSequence.vB.Add (ButtonName);
if (Input.GetButtonDown (ButtonName))
currentSequence.vBD.Add (ButtonName);
if (Input.GetButtonUp (ButtonName))
currentSequence.vBU.Add (ButtonName);
}
// only write if something changed
if (AnyChange(oldSequence, currentSequence))
{
//Debug.Log (JsonUtility.ToJson (newSequence));
inputRecordStream.WriteLine (JsonUtility.ToJson (currentSequence));
oldSequence = currentSequence;
}
}
Комментарии:
1. ваш файл challenge1.txt пусто, и это нормально, вы пишете «» внутри него.!
2. О, хорошо. Поэтому мне не удалось включить их в сборку, я просто создал в ней новые файлы. Знаете ли вы, как я мог бы включить текстовые файлы, которые я создаю во время выполнения, в сборку? @Frenchy
3. да, но покажите больше кода .. как вы создаете свой текст
Ответ №1:
File.WriteAllText("Assets/Resources/Recordings/Challenge1.txt", "");
При использовании File.WriteAllText(string path string text )
убедитесь, что вы включили данные, которые хотите записать в файл. Вы включили только «», который не будет записывать символы в файл.
Чтобы импортировать ресурсы для использования во время выполнения, вы можете использовать Resources.Load(string path)
. Это позволит вам получить доступ к файлу в сценариях Unity во время выполнения.
Ответ №2:
Также убедитесь, что вы .закройте файл в конце вашего скрипта, который фактически сохраняет файл, чтобы его можно было открыть позже!
Комментарии:
1. Пожалуйста, добавьте фрагмент кода для тех же и ссылочных ссылок.