Как мне исправить ошибку JavaScript в проекте UNITY 3D с использованием функции-члена System.IO.File?

#unity3d #.net #unityscript

#unity3d #.net #unityscript

Вопрос:

У меня здесь есть функция, которая хранит координаты фрагмента. Кажется, все в порядке, но консоль выдает мне эту ошибку:

 BCE0019: 'WriteLine' is not a member of 'System.IO.StreamReader'
  

Если у вас есть какие-либо идеи, как это исправить, я очень признателен.

 function writeChunks(fileName : String, xco : int, yco : int, zco : int) {
    var sr = System.IO.File.OpenText(fileName);
    sr.WriteLine("Chunk ("
                      xco   ", " 
                      yco   ", " 
                      zco   ")");
    sr.Close();
}
  

ОБНОВЛЕНИЕ 1
Этот код:

  function writeChunks(fileName : String, xco : int, yco : int, zco : int) {
    var sr = System.IO.File.OpenText(fileName);
    System.IO.File.WriteAllText("C:/youfilename.txt", "Chunk ("
                  xco   ", " 
                  yco   ", " 
                  zco   ")");
    sr.Close();
    }
  

Выдает мне эту ошибку:

     DirectoryNotFoundException: Could not find a part of the path "C:Reactor Gameschunks.txt".
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) (at /Users/builduser/buildslave/monoAndRuntimeClassLibs/build/mcs/class/corlib/System.IO/FileStream.cs:292)
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share)
(wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
System.IO.StreamWriter..ctor (System.String path, Boolean append, System.Text.Encoding encoding, Int32 bufferSize) (at /Users/builduser/buildslave/monoAndRuntimeClassLibs/build/mcs/class/corlib/System.IO/StreamWriter.cs:124)
System.IO.StreamWriter..ctor (System.String path, Boolean append)
(wrapper remoting-invoke-with-check) System.IO.StreamWriter:.ctor (string,bool)
System.IO.File.CreateText (System.String path) (at /Users/builduser/buildslave/monoAndRuntimeClassLibs/build/mcs/class/corlib/System.IO/File.cs:159)
infiniteTerrain $saveLoadedChunk$5 $.MoveNext () (at Assets/Script/infiniteTerrain.js:61)
  

ОБНОВЛЕНИЕ 2
Этот код:

 function writeChunks(fileName : String, xco : int, yco : int, zco : int) {
    var sw = new StreamWriter("fileName"); 
    sw.WriteLine("Chunk ("
                  xco   ", " 
                  yco   ", " 
                  zco   ")");  
    sw.Close();
}
  

Выдает мне эту ошибку:

 BCE0005: Unknown identifier: 'StreamWriter'.
  

Комментарии:

1. Пока ничего, я понятия не имею, что это может быть : (

2. Поддержал ваш вопрос, хотя.. чтобы больше людей увидели это 🙂

3. Я бы протестировал и попробовал устранить проблему, но не смогу использовать библиотеку Unity 3d до 8:00. Проголосовал, хотя и как полезный

4. Исключение @user3722399 DirectoryNotFoundException означает, что вам нужен этот каталог. Создайте каталог под названием Reactor Games.

5. Обратите внимание, что UnityScript отличается от Javascript. wiki.unity3d.com/index.php?title=UnityScript_versus_JavaScript

Ответ №1:

Если вы можете добавить класс C # для вашего удобства, а затем просто вызвать это. Но, похоже, вы также можете использовать это с JavaScript:

Также убедитесь, что ваш каталог существует:

 System.IO.File.WriteAllText(filepathIncludingFileName, "Chunk ("
                  xco   ", " 
                  yco   ", " 
                  zco   ")");
  

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

 var sw : StreamWriter = new StreamWriter(filepathIncludingFileName);
sw.WriteLine("Line to write");
sw.WriteLine("Another Line");
sw.Flush();
sw.Close();
  

К сожалению, я не смог найти эту информацию в документации Unity3D scripting API. Вы должны использовать это с осторожностью.

Комментарии:

1. Исключение DirectoryNotFoundException: не удалось найти часть пути «C:Reactor Gameschunks.txt «.

2. Это выдает ошибку, которая не вписывается в этот комментарий, я опубликую ее в своем первоначальном сообщении