Top.Mail.Ru
Ответы

Помогите решить ошибки в юнити c#

Здравствуйте я новичок в програмировании и я хотел как то соединить два кода в одном. Кароче вот
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEditor.Experimental.GraphView;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Dialog_NextClick : MonoBehaviour
{
public GameObject Text1;
public GameObject Text2;
private bool isText1 = true;
public NpcTalk npc_taskScript;

// Use this for initialization
void Start()
{

}

// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (isText1 == true)
{
isText1 = false;
}
else
{
isText1 = true;
npc_taskScript.EndDialog = true;
}
}
if (isText1 == true)
{
Text1.SetActive(true);
Text2.SetActive(false);
}
else
{
Text1.SetActive(false);
Text2.SetActive(true);
}
if (isText1 == false)
{
{
Text2.SetActive(false);
else
{
private void ChangeScene(int scene) => SceneManager.LoadScene(3);
}
}
}
}
}

Ошибки:1.Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) CS1003 Синтаксическая ошибка, требуется "(" Assembly-CSharp C:\Users\botez\Downloads\My project\Assets\Scripts\Event halloween script\Dialog_NextClick.cs 48.
2. Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) CS1026 Требуется ")" Assembly-CSharp C:\Users\botez\Downloads\My project\Assets\Scripts\Event halloween script\Dialog_NextClick.cs 48.
3.Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) CS1002 Требуется ";". Assembly-CSharp C:\Users\botez\Downloads\My project\Assets\Scripts\Event halloween script\Dialog_NextClick.cs 48.
4.Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) CS0106 Модификатор "private" недопустим для этого элемента. Assembly-CSharp C:\Users\botez\Downloads\My project\Assets\Scripts\Event halloween script\Dialog_NextClick.cs 51.
5.Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) CS1525 Недопустимый термин "else" в выражении Assembly-CSharp, Assembly-CSharp C:\Users\botez\Downloads\My project\Assets\Scripts\Event halloween script\Dialog_NextClick.cs 48.

По дате
По рейтингу
Аватар пользователя
Новичок
7мес

Здравствуйте! Давайте разберем ошибки в вашем коде и внесем необходимые исправления.

Вот исправленный вариант вашего кода:

```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Dialog_NextClick : MonoBehaviour
{
public GameObject Text1;
public GameObject Text2;
private bool isText1 = true;
public NpcTalk npc_taskScript;

void Start()
{
// Инициализация, если нужно
}

void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (isText1)
{
isText1 = false;
}
else
{
isText1 = true;
npc_taskScript.EndDialog = true;
}
}

Text1.SetActive(isText1);
Text2.SetActive(!isText1);
}

private void ChangeScene(int scene)
{
SceneManager.LoadScene(scene);
}
}
```

Теперь по конкретным ошибкам:

1. **Ошибка CS1003 и CS1026:** Вы имели лишнюю фигурную скобку и неправильно расставленные скобки. Убедитесь, что каждая открывающая скобка `{` имеет соответствующую закрывающую `}`.

2. **Ошибка CS1002:** Проблема была связана с неправильным синтаксисом после `if`. Убедитесь, что вы правильно расставили точки с запятой в конце операторов3. **Ошибка CS0106:** Модификатор `private` нельзя использовать внутри блока кода. Он должен быть применен к методам или переменным на уровне класса.

4. **Ошибка CS1525:** Ошибка в синтаксисе `else`. Проверьте, чтобы у вас не было лишних фигурных скобок и чтобы все конструкции были правильно оформлены.

Теперь ваш код должен компилироваться без ошибок. Если будут дополнительные вопросы, не стесняйтесь спрашивать!

Аватар пользователя
Искусственный Интеллект
7мес
123
         if (isText1 == false)  
        {  
            {  

Ну так ты проследи, чтобы скобки нормально были расставлены. У тебя указана строка ошибки, просто посмотри на строку и найди проблему.

1
  if (isText1 == true)  

Нет смысла так писать, можно ограничиться этим.

1
  if (isText1)  

И ни к чему дублировать свой код.

12
 Text1.SetActive(isText);  
Text2.SetActive(!isText);  

Вот так вообще писать нельзя. public/private и прочие модификаторы доступа не могут быть использованы внутри метода.

1234
             else  
                {  
                    private void ChangeScene(int scene) => SceneManager.LoadScene(3);  
                }  

Ты рано начал изучать юнити. Изучи сначала основы программирования на обычных консольных приложениях.

1
 isText = !isText;