Error cs0106 the modifier private is not valid for this item

I keep getting this error ( CS0106: The modifier 'private' is not valid for this item) and could use some help. I'm trying to make a random object generator for my game but since I am still a newbie

I keep getting this error ( CS0106: The modifier ‘private’ is not valid for this item) and could use some help. I’m trying to make a random object generator for my game but since I am still a newbie coder I cannot seem to figure out how to fix this. Any help would be nice

Here is the code im using:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class deployAsteroids : MonoBehaviour
{

public GameObject asteroidPrefab;
public float respawnTime = 1.0f;


void Start()
{
    screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(screenBounds.x, screenBounds.y, Camera.main.transform.position.z));
    StartCorountine(asteroidWave());
    
    private void spawnEnemy()
    {
        GameObject a = Instantiate(asteroidPrefab) as GameObject;
        a.transform.position = new Vector2(Random.Range(-screenBounds.x, screenBounds.x), screenBounds.y * -2);
    }
    IEnumerator astroidWave()
    {
        while (true)
        {
            yield return new WaitForSeconds(respawnTime);
            spawnEnemy();
        }
    }
}

asked Nov 13, 2021 at 22:30

EverettRike's user avatar

7

Anytime you get a compiler error the first thing you should consider is to lookup up the error code in a search engine. From CS0106 the rules are provided. The forth bullet point is clear on this.

Access modifiers are not allowed on a local function. Local functions are always private.

You have two options:

  1. Move the method outside of the parent method (Start()). This is the typical scenario if it will be used in more than one place.
  2. Remove the modifier private.

answered Nov 13, 2021 at 22:44

Omar Abdel Bari's user avatar

Try using the static modifier, and reading this. That could work, it worked for me when I got the same error in unity for a public void.

Also, consider moving your method out of Start(), like others have said.

answered Jul 1, 2022 at 16:34

Person is me's user avatar

1

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
159
160
161
162
163
164
165
{
    public partial class Form1 : Form
    {
        float a, b;// kак видно из формы, наш калькулятор сможет производить стандартные математические операции: сложение, вычитание, умножение и деление. float – это тип с плавающей точкой, позволяющий работать с десятичными дробями, что нам, безусловно, нужно при наличии кнопки “.” .
        int count; // bлагодаря второй переменной мы будем давать программе указания, какую именно операцию производить с переменными, описанными выше. Здесь нам не нужна дробь, поэтому обойдёмся целочисленным типом int.
        bool znak = true; // оследняя переменная znak нам понадобится для того, чтобы менять знаки у введённых чисел. Тип bool может иметь два значения – ture и false. Мы представим, что если znak имеет значение true в программе, то это означает, что у числа знак +, если false – число отрицательное и перед собой имеет знак -. Изначально в калькуляторе вбиваются положительные числа, поэтому мы сразу присвоили переменной значение true.
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button17_Click(object sender, EventArgs e)
        {
 
            textBox2.Text = textBox2.Text + 0;
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 1;// текст бох при нажатие кнопки отображает цифру
        }
 
        private void button6_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 2;
        }
 
        private void button7_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 3;
        }
 
        private void button8_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 4;
        }
 
        private void button9_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 5;
        }
 
        private void button10_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 6;
        }
 
        private void button11_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 7;
        }
 
        private void button12_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 8;
        }
 
        private void button13_Click(object sender, EventArgs e)
        {
            textBox2.Text = textBox2.Text + 9;
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            a = float.Parse(textBox2.Text);//иваем первой переменной a то, что будет написано в TextBox’e (а именно число, которое введёт пользователь перед тем, как нажать кнопку “+”).
            textBox2.Clear();//Затем TextBox очищается, число, введённое пользователем, в нём пропадает (но остаётся в переменной a
            count = 1; // Переменной count присваивается число 1, которая потом укажет программе, что именно операцию сложения надо будет произвести с числами.
            label3.Text = a.ToString() + "+"; // Затем в Label записывается число из переменной a (то самое, которое изначально ввёл пользователь) и знак плюса. Выглядеть в форме это будет так, как описано ниже.
            znak = true;
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            a = float.Parse(textBox2.Text);
            textBox2.Clear();
            count = 3;
            label1.Text = a.ToString() + "*";
            znak = true;
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            a = float.Parse(textBox2.Text);
            textBox2.Clear();
            count = 2;
            label1.Text = a.ToString() + "-";
            znak = true;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            a = float.Parse(textBox2.Text);
            textBox2.Clear();
            count = 4;
            label1.Text = a.ToString() + "/";
            znak = true;
        }
 
        private void button15_Click(object sender, EventArgs e)
        {
            calculate();//создать функцию, которая будет применять нужные нам математические операции к числам.
            label3.Text = "";
            private void calculate()
            {
                switch (count)//Switch – это оператор управления. Он может включать в себя несколько case’ов. Case – метки, от значения которых зависит, какие операции будут происходить.Строка switch(count) означает, что именно от значения count будет зависеть, какое действие будет происходить в коде switch’a.
 
                {
                    case 1:
                        b = a + float.Parse(textBox1.Text);
                        textBox1.Text = b.ToString();
                        break;
                    case 2:
                        b = a - float.Parse(textBox1.Text);
                        textBox1.Text = b.ToString();
                        break;
                    case 3:
                        b = a * float.Parse(textBox1.Text);
                        textBox1.Text = b.ToString();
                        break;
                    case 4:
                        b = a / float.Parse(textBox1.Text);
                        textBox1.Text = b.ToString();
                        break;
 
                    default:
                        break;
                }
 
            }
 
        }
 
        private void button14_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
            label1.Text = "";
 
        }
 
        private void button18_Click(object sender, EventArgs e)
        {
 
            {
                if (znak == true)
                {
                    textBox1.Text = "-" + textBox1.Text;
                    znak = false;
                }
                else if (znak == false)
                {
                    textBox1.Text = textBox1.Text.Replace("-", "");
                    znak = true;
                }
            }
 
 
        }
}   }

Permalink

Cannot retrieve contributors at this time

description title ms.date f1_keywords helpviewer_keywords ms.assetid

Compiler Error CS0106

Compiler Error CS0106

06/15/2017

CS0106

CS0106

8dec906a-ed69-4ed5-aa61-c8600d138200

Compiler Error CS0106

The modifier ‘modifier’ is not valid for this item

A class or interface member was marked with an invalid access modifier. The following examples describe some of these invalid modifiers:

  • The static modifier is not permitted on a local function. The static local function feature is supported starting with C# 8.0. A compiler that doesn’t support C# 8.0 produces CS0106 when you try to use this feature. However, a compiler that supports C# 8.0 but the set language version is prior to C# 8.0 will produce a diagnostic suggesting that you use C# 8.0 or later.

  • The public keyword is not allowed on an explicit interface declaration. In this case, remove the public keyword from the explicit interface declaration.

  • The abstract keyword is not allowed on an explicit interface declaration because an explicit interface implementation can never be overridden.

  • Access modifiers are not allowed on a local function. Local functions are always private.

In prior releases of Visual Studio, the static modifier was not permitted on a class, but static classes are allowed starting with Visual Studio 2005.

For more information, see Interfaces.

Example

The following sample generates CS0106:

// CS0106.cs
namespace MyNamespace
{
   interface I
   {
      void M();
   }

   public class MyClass : I
   {
      public void I.M() {}   // CS0106
      public static void Main() {}
   }
}

public static void main (Args _args)
{
TmpFrmVirtual tmpFrmVirtualVend;
PurchFormLetter_Invoice purchFormLetter;
VendPackingSlipJour vendPackingSlipJour;
SysQueryRun chooseLinesQuery;
SysQueryRun chooseLinesPendingInvoiceQuery;
container conTmpFrmVirtual;
List selectedList = new List(Types::Record);
PurchId purchId = «PO00001» ; //Purchase order number
PackingSlipId packingSlipId = «PCK0001»; //Product receipt number

select firstonly vendPackingSlipJour
where vendPackingSlipJour.PurchId == purchId
&& vendPackingSlipJour.PackingSlipId == packingSlipId;

if (vendPackingSlipJour)
{
tmpFrmVirtualVend.clear();
tmpFrmVirtualVend.TableNum = vendPackingSlipJour.TableId;
tmpFrmVirtualVend.RecordNo = vendPackingSlipJour.RecId;
tmpFrmVirtualVend.NoYes = NoYes::Yes;
tmpFrmVirtualVend.Id = vendPackingSlipJour.PurchId;
tmpFrmVirtualVend.insert();
}

chooseLinesQuery = new SysQueryRun(queryStr(PurchUpdate));
chooseLinesQuery.query().addDataSource(tableNum(VendInvoiceInfoTable)).enabled(false);

// chooseLinesPendingInvoiceQuery needs to be initialized, although it will not be used
chooseLinesPendingInvoiceQuery = new SysQueryRun(queryStr(PurchUpdatePendingInvoice));
chooseLinesPendingInvoiceQuery.query().dataSourceTable(tableNum(PurchTable)).addRange(fieldNum(PurchTable,PurchId)).value(queryValue(»));

purchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice);
purchFormLetter.chooseLinesQuery (chooseLinesQuery);
purchFormLetter.parmQueryChooseLinesPendingInvoice(chooseLinesPendingInvoiceQuery);
purchFormLetter.purchTable (PurchTable::find(PurchId));
purchFormLetter.transDate (systemDateGet());
purchFormLetter.parmParmTableNum (strFmt(«%1»,packingSlipId)); //This is invoice number
purchFormLetter.printFormLetter (NoYes::No);
purchFormLetter.sumBy (AccountOrder::Auto);
purchFormLetter.specQty (PurchUpdate::PackingSlip);

while select tmpFrmVirtualVend
{
selectedList.addEnd(tmpFrmVirtualVend);
conTmpFrmVirtual = selectedList.pack();
}
purchFormLetter.selectFromJournal(conTmpFrmVirtual);
purchFormLetter.reArrangeNow(true);
purchFormLetter.run();
}

I keep getting this error ( CS0106: The modifier ‘private’ is not valid for this item) and could use some help. I’m trying to make a random object generator for my game but since I am still a newbie coder I cannot seem to figure out how to fix this. Any help would be nice

Here is the code im using:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class deployAsteroids : MonoBehaviour
{

public GameObject asteroidPrefab;
public float respawnTime = 1.0f;


void Start()
{
    screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(screenBounds.x, screenBounds.y, Camera.main.transform.position.z));
    StartCorountine(asteroidWave());
    
    private void spawnEnemy()
    {
        GameObject a = Instantiate(asteroidPrefab) as GameObject;
        a.transform.position = new Vector2(Random.Range(-screenBounds.x, screenBounds.x), screenBounds.y * -2);
    }
    IEnumerator astroidWave()
    {
        while (true)
        {
            yield return new WaitForSeconds(respawnTime);
            spawnEnemy();
        }
    }
}

Понравилась статья? Поделить с друзьями:
  • Error cs0103 unity
  • Error cs0103 the name thread does not exist in the current context
  • Error cs0103 the name scenemanager does not exist in the current context
  • Error cs0103 the name scenemanagement does not exist in the current context
  • Error cs0103 the name math does not exist in the current context