Внесение изменений в скрипт

Программирование на Юнити.

Внесение изменений в скрипт

Сообщение labinzevvAlex 23 апр 2021, 03:32

Всем привет. Такой вопрос: Возможно ли из игрового процесса вносить изменения в скрипт или в файл? Допустим вводишь слово, а в файле словаря такого слова нет, и типа жмёшь на UI кнопку "добавить новое слово" и введённое слово добавляется в файл словаря. Или только в редакторе открывать файл и добавлять в ручную? Если такая возможность всё-таки есть, подскажите плиз)

В этой теме разобрался:
есть скрипт:
Синтаксис:
Используется csharp

using UnityEngine;
using UnityEngine.UI;
using System.IO;
using UnityEngine.EventSystems;



public class addWord : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    string pathToFile = "C:/rus.txt";
    string[] slovar = File.ReadAllLines("C:/rus.txt");
    public Text wordDown;
    public string wordDownStr;
    bool pressed = false;

    public void OnPointerDown(PointerEventData eventData)
    {
        pressed = true;
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        pressed = false;
    }

    void Update()
    {
        wordDownStr = wordDown.text;
        if (pressed)
        {
            File.AppendAllText(pathToFile, Environment.NewLine);
            File.AppendAllText(pathToFile, wordDownStr);
        }
    }
}
 


но работает не корректно

строка File.AppendAllText(pathToFile, Environment.NewLine); - в ней "имя Environment не существует в данном контексте" (не могу добавить новую строку в файл)

строка File.AppendAllText(pathToFile, wordDownStr); - работает но записывает в файл одно и то же слово несколько раз подряд при одном нажатии ui кнопки (хотя должно записать однократно)

Народ, помогите разобраться в чём дело...
labinzevvAlex
UNIт
 
Сообщения: 74
Зарегистрирован: 12 июл 2020, 12:18

Re: Внесение изменений в скрипт

Сообщение Xtir 23 апр 2021, 06:21

Зачем здесь Update?
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Внесение изменений в скрипт

Сообщение labinzevvAlex 23 апр 2021, 09:19

переделал скрипт, теперь с записью нового слова всё ОК (записывает новое слово единожды, как нужно)
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEngine.UI;
using System.IO;

public class addWord : MonoBehaviour
{
    string pathToFile = "C:/rus.txt";
    public Text wordDown;
    public string wordDownStr;

    public void rec()
    {
        wordDownStr = wordDown.text;
        File.AppendAllText(pathToFile, wordDownStr);
        File.AppendAllText(pathToFile, Environment.NewLine);
    }
}
 

Но со строкой File.AppendAllText(pathToFile, Environment.NewLine); так и осталась проблема: не работает Environment (не могу создать в файле новую строку) Может быть есть какой то другой способ?
labinzevvAlex
UNIт
 
Сообщения: 74
Зарегистрирован: 12 июл 2020, 12:18

Re: Внесение изменений в скрипт

Сообщение TeslaGan 23 апр 2021, 10:00

labinzevvAlex писал(а):переделал скрипт, теперь с записью нового слова всё ОК (записывает новое слово единожды, как нужно)
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEngine.UI;
using System.IO;

 

Но со строкой File.AppendAllText(pathToFile, Environment.NewLine); так и осталась проблема: не работает Environment (не могу создать в файле новую строку) Может быть есть какой то другой способ?

в начале пропиши using System;

на будущее. если используешь сторонние библиотеки, они обычно просят добавления пространства имен. делается это через using.
в документации microsoft обычно пишут какое пространство имен использует тот или иной класс(обычно в самом начале)
TeslaGan
UNITрон
 
Сообщения: 315
Зарегистрирован: 01 авг 2015, 18:00

Re: Внесение изменений в скрипт

Сообщение labinzevvAlex 23 апр 2021, 11:19

TeslaGan писал(а):
labinzevvAlex писал(а):переделал скрипт, теперь с записью нового слова всё ОК (записывает новое слово единожды, как нужно)
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEngine.UI;
using System.IO;

 

Но со строкой File.AppendAllText(pathToFile, Environment.NewLine); так и осталась проблема: не работает Environment (не могу создать в файле новую строку) Может быть есть какой то другой способ?

в начале пропиши using System;

на будущее. если используешь сторонние библиотеки, они обычно просят добавления пространства имен. делается это через using.
в документации microsoft обычно пишут какое пространство имен использует тот или иной класс(обычно в самом начале)


Спасибо, буду знать. С самой темой только что разобрался:
добавление новой строки в файл оказывается выглядит так:
File.AppendAllText(pathToFile, "\r\n");
labinzevvAlex
UNIт
 
Сообщения: 74
Зарегистрирован: 12 июл 2020, 12:18

Re: Внесение изменений в скрипт

Сообщение TeslaGan 23 апр 2021, 11:34

а подобная конструкция вам не подходит?
https://docs.microsoft.com/ru-ru/dotnet ... m_String__
TeslaGan
UNITрон
 
Сообщения: 315
Зарегистрирован: 01 авг 2015, 18:00

Re: Внесение изменений в скрипт

Сообщение labinzevvAlex 23 апр 2021, 18:06

TeslaGan писал(а):а подобная конструкция вам не подходит?
https://docs.microsoft.com/ru-ru/dotnet ... m_String__

Пробовал, не работает. Походу я что-то не так делаю...
Но во всяком случае вариант, который я наковырял работает:)
labinzevvAlex
UNIт
 
Сообщения: 74
Зарегистрирован: 12 июл 2020, 12:18


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 15