Unity error cs0116 a namespace cannot directly contain members such as fields or methods

I am trying to use this code for NET.reflector using Reflexil. I am trying to replace code with this: if(Input.GetKeyDown(KeyCode.Keypad5)) { int i = 0; Character localPlayer = PlayerClient.

I am trying to use this code for NET.reflector using Reflexil. I am trying to replace code with this:

if(Input.GetKeyDown(KeyCode.Keypad5)) { 
int i = 0; 
Character localPlayer = PlayerClient.GetLocalPlayer().controllable.GetComponent<Character>(); 
foreach (UnityEngine.Object obj2 in UnityEngine.Object.FindObjectsOfType(typeof(LootableObject))) 
{ 
    if (obj2 != null) 
    { 
        i++; 
        LootableObject loot = (LootableObject) obj2; 
        Debug.Log("Loot "+i+": "+loot.transform.position.ToString()); 
        CCMotor ccmotor = localPlayer.ccmotor; 
        if(ccmotor != null && tpPos1 != Vector3.zero) { 
            ccmotor.Teleport(loot.transform.position); 
            Notice.Popup("", "Teleported to "+loot.name, 1.5f); 
        } 
        break; 
    } 
} 

}

But it gives me an error when I try to compile:

Line: 1 Column: 1 Error Number: CS0116  Error Message: "A namespace does not directly contain members such as fields or methods"

This is Unity code I think. I am not that experienced. Could anyone fix this for me? Or tell me what to do? Thanks!

derHugo's user avatar

derHugo

77.4k9 gold badges67 silver badges105 bronze badges

asked Jan 17, 2014 at 0:40

user3204732's user avatar

3

The snippet you’re showing doesn’t seem to be directly responsible for the error.

This is how you can CAUSE the error:

namespace MyNameSpace
{
   int i; <-- THIS NEEDS TO BE INSIDE THE CLASS

   class MyClass
   {
      ...
   }
}

If you don’t immediately see what is «outside» the class, this may be due to misplaced or extra closing bracket(s) }.

answered Jan 17, 2014 at 0:48

G. Stoynev's user avatar

G. StoynevG. Stoynev

7,2616 gold badges39 silver badges49 bronze badges

3

Содержание

  1. Error cs0116 как исправить
  2. Почему ошибка компилятора CS0116 превыше всего?
  3. 2 ответы
  4. Error cs0116 как исправить
  5. Ошибка Unity3D — Error CS0116
  6. Как исправить ошибки CS0117 и CS0122?

Error cs0116 как исправить

Здравствуйте, Аноним, Вы писали:

А>Error 1 A namespace cannot directly contain members such as fields or methods
А>подскажите как можно убрать ошибку

Самый простой и надежный способ — выключить компьютер. Есть способы и посложнее, но для них желательно знать, на каком языке написана программа, и неплохо бы посмотреть на код.

От: Pavel_Agurov
Дата: 16.07.10 14:11
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Error 1 A namespace cannot directly contain members such as fields or methods
А>подскажите как можно убрать ошибку

Ну как написано так и сделать — обернуть в класс. В C# нет глобальных переменных

От: Аноним
Дата: 16.07.10 14:54
Оценка:

Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Аноним, Вы писали:

А>>Error 1 A namespace cannot directly contain members such as fields or methods
А>>подскажите как можно убрать ошибку

N>Самый простой и надежный способ — выключить компьютер. Есть способы и посложнее, но для них желательно знать, на каком языке написана программа, и неплохо бы посмотреть на код.

кода нет просто бросил меню на форму и сделал пару пунктов.
сделал другой проект заработало (библиотеки подключал с компонентами не работало пишет ошибку и все тут CS0116)
в новом проекте заработало

Есть еще небольшой вопрос

VS2010 постоянно падает подскажите где взять последнии обновления

Источник

Почему ошибка компилятора CS0116 превыше всего?

код скрипта в Default.aspx.cs (обратите внимание, что «этот случайный текст каким-то образом проигнорирован» игнорируется и синтаксическая ошибка не генерируется):

Почему появляется ошибка компилятора CS0116? Почему игнорируются другие вещи (например, синтаксическая ошибка)? Обновление: обратите внимание, что если я удалю «этот случайный текст каким-то образом проигнорирован», ошибка строки все равно останется.

ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ: Решение 1. Очевидно, лишнюю строку следует удалить. 2. Инструменты-> Параметры-> Текстовый редактор-> Базовый-> VB-Specific-> Красивое перечисление (переформатирование) кода было включено и вызывало автоматическую смену регистра («класс» на «класс»). Я не сразу это заметил. Большое Вам спасибо. Теперь это работает как шарм. @ Роб Левин и @Guffa Я могу принять только один ответ, но вы оба проделали отличную работу!

Ваш вопрос содержит собственный ответ в нескольких местах (сообщение об ошибке, комментарий и косвенно ваше замечание о «каким-то образом проигнорировано»). По этой причине это плохой вопрос, и, в первую очередь, из-за того, что сообщение об ошибке компилятора не отображается — sehe

Обратите внимание, что если я удалю «этот случайный текст каким-то образом проигнорирован», ошибка строки все равно останется. Нет, для вас я повторю: эта строка НЕ ​​имеет значения. Игнорируйте это, если хотите. Строка добавлена ​​намеренно, чтобы подчеркнуть тот факт, что синтаксическая ошибка каким-то образом игнорируется. В общем, мой вопрос не содержит собственного ответа. Так что это разумный вопрос. — Pavel Nefyodov

Согласно вашим собственным комментариям к существующим ответам, опубликованный вами код больше не актуален. Убедитесь, что вы применили оба предложения, а затем отредактируйте свой вопрос с помощью обновленного кода, предполагая, что ошибка все еще существует. — Paul-Jan

Кроме того, то, что удаление одной строки не устраняет ошибку, не означает, что ее можно игнорировать. Это просто означает, что в вашем коде есть несколько ошибок. — Paul-Jan

Вы пробовали и мой ответ, и ответ Гуффа? в то же время? Оба они вызывают одну и ту же проблему для компилятора. Они оба являются нераспознанным материалом (который выглядит как какое-то объявление) непосредственно в пространстве имен, а не заключен в класс (или структуру). Любой из них вызовет ошибку, которую вы видите. Вы должны исправить их обоих. — Rob Levine

2 ответы

Ошибка CS0116 появляется именно из-за вашей строки

Это сообщение об ошибке сообщает вам, что такие элементы, как поля, методы, свойства и т. Д., Не могут появляться непосредственно внутри пространства имен — они должны быть заключены в класс или структуру. [Как указывает Марк в комментарии — даже несмотря на то, что эта строка появляется над объявлением пространства имен, она по-прежнему считается находящейся непосредственно внутри Глобальный пространство имен]

Другими словами — поскольку он видит эту проблему компиляции, он не пытается понять, что у вас может быть в файле класса, и не выдает никаких сообщений о типах синтаксической ошибки — он действительно говорит «это файл абсолютно неправильный, и я даже не собираюсь пытаться разобраться в нем «.

ответ дан 26 апр.

стоит отметить (для OP), что это находится в корневом / глобальном пространстве имен, но все же применяются те же правила. Это все еще пространство имен. — Марк Гравелл ♦

Спасибо за быстрый ответ. Если я удалю «этот случайный текст каким-то образом проигнорирован», ошибка строки все равно сохранится. Так что проблема не в этом. — Павел Нефёдов

Это потому что ты Также есть проблема, которую Гуффа отмечает в своем ответе — вам нужно изменить регистр букв в слове «Класс» на «класс». Что касается компилятора, это одна и та же проблема: нераспознанный материал, который выглядит как какое-то объявление, которое находится непосредственно в пространстве имен, а не в классе (или структуре) — Роб Левин

Изменить Class в class .

Поскольку компилятор не распознает Class ,
метод все еще не находится в классе, и вы все равно получаете ту же ошибку.

Источник

Error cs0116 как исправить

Здравствуйте, Аноним, Вы писали:

А>Error 1 A namespace cannot directly contain members such as fields or methods
А>подскажите как можно убрать ошибку

Самый простой и надежный способ — выключить компьютер. Есть способы и посложнее, но для них желательно знать, на каком языке написана программа, и неплохо бы посмотреть на код.

От: Pavel_Agurov
Дата: 16.07.10 14:11
Оценка:

Здравствуйте, Аноним, Вы писали:

А>Error 1 A namespace cannot directly contain members such as fields or methods
А>подскажите как можно убрать ошибку

Ну как написано так и сделать — обернуть в класс. В C# нет глобальных переменных

От: Аноним
Дата: 16.07.10 14:54
Оценка:

Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Аноним, Вы писали:

А>>Error 1 A namespace cannot directly contain members such as fields or methods
А>>подскажите как можно убрать ошибку

N>Самый простой и надежный способ — выключить компьютер. Есть способы и посложнее, но для них желательно знать, на каком языке написана программа, и неплохо бы посмотреть на код.

кода нет просто бросил меню на форму и сделал пару пунктов.
сделал другой проект заработало (библиотеки подключал с компонентами не работало пишет ошибку и все тут CS0116)
в новом проекте заработало

Есть еще небольшой вопрос

VS2010 постоянно падает подскажите где взять последнии обновления

Источник

Ошибка Unity3D — Error CS0116

Не могу понять что делать, уже весь интернет перерыл, где надо исправить код? спасибо
вот ошибки:
AssetsScriptsObjectCounter.cs(1,13): error CS0116: A namespace cannot directly contain members such as fields or methods

AssetsScriptsObjectCounter.cs(1,17): error CS1022: Type or namespace definition, or end-of-file expected

AssetsScriptsObjectCounter.cs(2,18): error CS0116: A namespace cannot directly contain members such as fields or methods

AssetsScriptsObjectCounter.cs(2,22): error CS1022: Type or namespace definition, or end-of-file expected

AssetsScriptsObjectCounter.cs(4,37): error CS1001: Identifier expected

AssetsScriptsObjectCounter.cs(4,37): error CS1003: Syntax error, ‘,’ expected

AssetsScriptsObjectCounter.cs(4,39): error CS1003: Syntax error, ‘,’ expected

AssetsScriptsObjectCounter.cs(4,48): error CS1001: Identifier expected

var Paper ; int = 0;
var paperToWin ; int = 10;

function OnTriggerEnter( other : Collider )
<
if (other.gameObject.tag == «Paper») ;
<
Paper += 1;
Debug.Log(«A paper was picked up. Total papers = » + Paper);
Destroy(other.gameObject);
>
>

function OnGUI()
<
if (Paper Лучший ответ

> Не могу понять что делать
Изучать C#

В Unity скрипты пишутся на C#, а ты пытаешься писать на TypeScript (или JavaScript), ещё и с ошибками.

Источник

Как исправить ошибки CS0117 и CS0122?

По туториалу собираю Tower Defence на Unity для себя и на моменте создания скрипта для башен получаю ошибки CS0117 и CS0122.
Туториал супер наглядный, там просто пишется код и дополнительно объясняется что к чему.
По итогу его написания у человека все работает, у меня ошибки.
Дословно выглядят они так:

1) AssetsScriptsTower.cs(26,41): error CS0117: ‘Enemies’ does not contain a definition for ‘enemies’

2) AssetsScriptsTower.cs(51,21): error CS0122: ‘Enemy.takeDamage(float)’ is inaccessible due to its protection level

  • Вопрос задан 13 мая 2022
  • 166 просмотров

Простой 1 комментарий

1 — у тебя в классе Enemies нет члена enemies. Возможно его нет совсем, а возможно у тебя опечатка.
2 — у тебя в классе Enemy есть метод takeDamage, но он не публичный

PS: На будущее:
— отмечай комментарием, на какой именно строке сработала ошибка
— не забывай заворачивать код в тег — это сильно упростит чтение для тех, кто попробует решить твой вопрос
— перед тем как задавать вопрос — попробуй загуглить в чём суть ошибки, и попробуй сам решить (CS0117, CS0122)
— перед тем как начинать писать на юнити, лучше всё-таки хоть самые основы C# изучить. Тут как в математике — без понимания простых вещей, ты гарантированно не сможешь понять сложные вещи.

Источник

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
// Создать абстрактный класс Stud с методами, позволяющим вывести на экран информацию о персоне
//Создать производные классы: Студент (фамилия, дата рождения, факультет, курс), Преподаватель (фамилия, дата рождения, факультет, должность, стаж), со своими методами вывода информации на экран.
//Cоздать базу (массив) из n персон, вывести полную информацию из базы на экран.
 
namespace StudAbstract
{
    abstract class Stud
    {
        abstract public void Show();
        public void defineDate(DateTime date)
        {
            DateTime dateNow = DateTime.Today;
            int year = dateNow.Year - date.Year;
            if (dateNow.Month < date.Month ||
                (dateNow.Month == date.Month && dateNow.Day < date.Day)) year--;
            Console.WriteLine("Возраст:{0} ", year);
        }
    }
 
    //фамилия, дата рождения, факультет
 
    class Applicant : Stud
    {
        public string Surname;
        public DateTime Date;
        public string Faculty;
 
        public Applicant(string surn, DateTime date1, string fac)
        {
            this.Surname = surn;
            this.Date = date1;
            this.Faculty = fac;
        }
 
        public string pSurname
        {
            get { return Surname; }
            set { Surname = value; }
        }
 
        public DateTime pDate
        {
            get { return Date; }
            set { Date = value; }
        }
 
        public string pFaculty
        {
            get { return Faculty; }
            set { Faculty = value; }
        }
 
        public override void Show()
        {
            Console.WriteLine("Фамилия: {0}", this.pSurname);
            Console.WriteLine("Дата рождения: {0:D}", this.pDate);
            Console.WriteLine("УО {0}", this.pFaculty);
        }
 
    }
 
    //Студент (фамилия, дата рождения, факультет, курс), 
    class Student : Applicant
    {
        public int studyYear;
 
        public Student(string surn, DateTime date1, string fac, int course)
            : base(surn, date1, fac)
        {
            this.studyYear = course;
        }
 
        public override void Show()
        {
            Console.WriteLine("Фамилия : {0}", this.Surname);
            Console.WriteLine("Дата рождения: {0:D}", this.Date);
            Console.WriteLine("Факультет: {0}", this.Faculty);
            Console.WriteLine("Курс: {0}", this.studyYear);
        }
    }
 
    //Преподаватель (фамилия, дата рождения, факультет, должность, стаж), 
    class Teacher : Applicant
    {
        public string Position;
        public int Experience;
 
        public Teacher(string surn, DateTime date1, string fac, string pos, int st)
            : base(surn, date1, fac)
        {
            this.Position = pos;
            this.Experience = st;
        }
 
        public override void Show()
        {
            Console.WriteLine("Фамилия : {0}", this.Surname);
            Console.WriteLine("Дата рождения: {0:D}", this.Date);
            Console.WriteLine("Факультет: {0}", this.Faculty);
            Console.WriteLine("Должность: {0}", this.Position);
            Console.WriteLine("Стаж: {0}", this.Experience);
 
        }
    }
    public static void GetAge(DateTime birthDay)   //компилятор выделяет GetAge и говорит, что ошибка заключается тут
    {
        //текущая дата
        DateTime today = DateTime.Now;
        //Переменная для расчета возраста
        int age;
        //Временная переменная для сравнения дат
        //(определяем было ли день рождения в этом году или нет)
        DateTime tmpDate = new DateTime(today.Year, birthDay.Month, birthDay.Day);
        if (tmpDate <= today) // если равно, то ДР сегодня :)
                              //если уже было или сегодня
            age = today.Year - birthDay.Year;
        else
            //если не было
            age = today.Year - birthDay.Year - 1;
        Console.WriteLine("Возраст:{0} ", age);
    }
 
    class Program
    {
        static void Main(string[] args)
        {
 
            // база данных
            Stud[] db = new Stud[6];
            DateTime date3 = new DateTime(1998, 2, 17, 7, 0, 0);
            DateTime date4 = new DateTime(2000, 10, 15, 7, 0, 0);
            DateTime date5 = new DateTime(1946, 9, 30, 7, 0, 0);
            DateTime date6 = new DateTime(1940, 12, 1, 7, 0, 0);
            DateTime date7 = new DateTime(2000, 4, 6, 7, 0, 0);
 
 
            db[0] = new Applicant("Иванов", date3, "ПОИТ");
            db[1] = new Applicant("Васильев", date3, "БГУИР МРК");
            db[2] = new Student("Андреева", date4, "ПМС", 1);
            db[3] = new Student("Алексеенко", date3, "ПОИТ", 2);
            db[4] = new Teacher("Назаров", date5, "ПОИТ", "Cтарший преподаватель", 20);
            db[5] = new Teacher("Батура", date6, "ПОИТ", "Доцент", 26);
 
            foreach (Stud item in db)
            {
                item.Show();
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
 
}

Понравилась статья? Поделить с друзьями:
  • Unity error cs0106 the modifier public is not valid for this item
  • Unity error adding package
  • Unique violation 7 error duplicate key value violates unique constraint
  • Unindent does not match any outer indentation level python как исправить
  • Unimac сушильная машина ошибка af