Error cs1656 cannot assign to translate because it is a method group

I'm a beginner currently trying to make a game on unity. Right now I'm trying to create an enemy spawners code using the tutorial: https://youtu.be/q1gAtOWTs-o The thing is, it uses this method cal...

I’m a beginner currently trying to make a game on unity. Right now I’m trying to create an enemy spawners code using the tutorial: https://youtu.be/q1gAtOWTs-o

The thing is, it uses this method called «Invoke Repeating» which brings up the error:

error CS1656: Cannot assign to ‘InvokeRepeating’ because it is a ‘method group’

Is there any fix I can do to solve the error? Below is my code:

public Transform[] spawnPoints;
public GameObject[] enemies;
int randomSpawnPoint, randomEnemy;
public static bool spawnAllowed;

// Start is called before the first frame update
void Start()
{
    spawnAllowed = true;
    InvokeRepeating = ("SpawnAnEnemy", 0f, 1f);
}

void SpawnAnEnemy()
{
    if(spawnAllowed)
    {
        randomSpawnPoint = Random.Range(0, spawnPoints.Length);
        randomEnemy = Random.Range(0, enemies.Length);
        Instantiate(enemies[randomEnemy], spawnPoints[randomSpawnPoint].position, Quaternion.identity);
    }
}

There are no other errors present and I only changed some variable names (like I used «enemies» instead of «monsters») so I am unsure what the issue is.

description title ms.date f1_keywords helpviewer_keywords ms.assetid

Compiler Error CS1656

Compiler Error CS1656

07/20/2015

CS1656

CS1656

b5463a12-d685-4dae-9f88-08383e271b7a

Compiler Error CS1656

Cannot assign to ‘variable’ because it is a ‘read-only variable type’

This error occurs when an assignment to variable occurs in a read-only context. Read-only contexts include foreach iteration variables, using variables, and fixed variables. To resolve this error, avoid assignments to a statement variable in using blocks, foreach statements, and fixed statements.

Example 1

The following example generates error CS1656 because it tries to replace complete elements of a collection inside a foreach loop. One way to work around the error is to change the foreach loop to a for loop. Another way, not shown here, is to modify the members of the existing element; this is possible with classes, but not with structs.

using System;  
using System.Collections;  
using System.Collections.Generic;  
using System.Text;  
  
namespace CS1656_2  
{  
  
    class Book  
    {  
        public string Title;  
        public string Author;  
        public double Price;  
        public Book(string t, string a, double p)  
        {  
            Title=t;  
            Author=a;  
            Price=p;  
  
        }  
    }  
  
    class Program  
    {  
        private List<Book> list;  
        static void Main(string[] args)  
        {  
            Program prog = new Program();  
            prog.list = new List<Book>();  
            prog.list.Add(new Book ("The C# Programming Language",  
                                    "Hejlsberg, Wiltamuth, Golde",  
                                     29.95));  
            prog.list.Add(new Book ("The C++ Programming Language",  
                                    "Stroustrup",  
                                     29.95));  
            prog.list.Add(new Book ("The C Programming Language",  
                                    "Kernighan, Ritchie",  
                                    29.95));  
            foreach(Book b in prog.list)  
            {  
                // Cannot modify an entire element in a foreach loop
                // even with reference types.  
                // Use a for or while loop instead  
                if (b.Title == "The C Programming Language")  
                    // Cannot assign to 'b' because it is a 'foreach
                    // iteration variable'  
                    b = new Book("Programming Windows, 5th Ed.", "Petzold", 29.95); //CS1656  
            }  
  
            //With a for loop you can modify elements  
            //for(int x = 0; x < prog.list.Count; x++)  
            //{  
            //    if(prog.list[x].Title== "The C Programming Language")  
            //        prog.list[x] = new Book("Programming Windows, 5th Ed.", "Petzold", 29.95);  
            //}  
            //foreach(Book b in prog.list)  
            //    Console.WriteLine(b.Title);  
  
        }  
    }  
}  

Example 2

The following sample demonstrates how CS1656 can be generated in other contexts besides a foreach loop:

// CS1656.cs  
// compile with: /unsafe  
using System;  
  
class C : IDisposable  
{  
    public void Dispose() { }  
}  
  
class CMain  
{  
    unsafe public static void Main()  
    {  
        using (C c = new C())  
        {  
            // Cannot assign to 'c' because it is a 'using variable'  
            c = new C(); // CS1656  
        }  
  
        int[] ary = new int[] { 1, 2, 3, 4 };  
        fixed (int* p = ary)  
        {  
            // Cannot assign to 'p' because it is a 'fixed variable'  
            p = null; // CS1656  
        }  
    }  
}  
  • Remove From My Forums
  • Question

  • User-1928244154 posted

    I recently wrote the below code for an ASP NET page. however, I got an error and I cant find out what exactly it is.

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <script runat="server">
        public void button_Click(Object s, EventArgs e)
        {
            messagelabel.Text = "<br/> Hello World";
        } 
    </script>
    <script runat="server">
        void Click(object a, EventArgs b)
        {
            mylabel.Text = nametextbox.Text;
        }
    </script>
    
    <head runat="server">
        <title>My First ASP.NET page!!</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
    <p>Hello there!</p>
    <p>
    The time is now:
    <asp:Label ID="myTimeLabel" runat="server" />
    </p>
    <p>
    <%-- Declare the title as string and set it --%>
    <% string Title = "This is generated by a code render block."; %>
    <%= Title %>
    </p>
    <%-- This is a server side comment.
     --%>
      <div>
        <asp:Button ID="button" runat="server" 
        OnClick="button_Click" Text="Click Here!!"/> 
        <asp:Label ID="messagelabel" runat="server"/>
        
        <div>
        <asp:TextBox ID="nametextbox" runat="server" /><!--text box run from the server -->
        <asp:Button ID="Click" runat="server" text="Click for your name" OnClick="Click"/><!--runs the function click from the server--> 
        <asp:Label ID="mylabel" runat="server" /> <!-- The result of clicking the button-->
        </div> 
        
        </div> 
           
        </div>
        </form>    
    </body>
    </html>
    Someone help.

Answers

  • User-691245060 posted

    change neame «Click» to some other, it should solve…

    Thanks,

    • Marked as answer by

      Thursday, October 7, 2021 12:00 AM

  • User3690988 posted

    I think calling your Button ‘Click’ with an event Click is the problem.  Try renaming your button:

    <asp:Button ID="btnClick" runat="server" text="Click for your name" OnClick="Click"/>
    • Marked as answer by
      Anonymous
      Thursday, October 7, 2021 12:00 AM

Skip to content

I’m a beginner currently trying to make a game on unity. Right now I’m trying to create an enemy spawners code using the tutorial: https://youtu.be/q1gAtOWTs-o

The thing is, it uses this method called «Invoke Repeating» which brings up the error stated in my title question. Is there any fix I can do to solve the error? Below is my code:

public Transform[] spawnPoints;
public GameObject[] enemies;
int randomSpawnPoint, randomEnemy;
public static bool spawnAllowed;

// Start is called before the first frame update
void Start()
{
    spawnAllowed = true;
    InvokeRepeating = ("SpawnAnEnemy", 0f, 1f);
}

void SpawnAnEnemy()
{
    if(spawnAllowed)
    {
        randomSpawnPoint = Random.Range(0, spawnPoints.Length);
        randomEnemy = Random.Range(0, enemies.Length);
        Instantiate(enemies[randomEnemy], spawnPoints[randomSpawnPoint].position, Quaternion.identity);
    }
}

There are no other errors present and I only changed some variable names (like I used «enemies» instead of «monsters») so I am unsure what the issue is.

>Solution :

InvokeRepeating is a method. You have to call the method as below:

InvokeRepeating("SpawnAnEnemy", 0f, 1f);

What you did as the attached code is assigning a Tuple value to it which is incorrect.

InvokeRepeating = ("SpawnAnEnemy", 0f, 1f);

Grepper Logo

Add Answer
|
View In TPC Matrix

Technical Problem Cluster First Answered On
August 23, 2021

Popularity
5/10

Helpfulness
1/10


Contributions From The Grepper Developer Community

Contents

Code Examples

  • unity error cs1656
  • Related Problems

  • unity error cs1656
  • error cs1002 unity
  • cs0101 unity error code
  • TPC Matrix View Full Screen

    unity error cs1656

    Comment

    0


    Popularity

    5/10 Helpfulness
    1/10
    Language
    csharp

    Source: support.unity.com

    Tags: c#

    Silly Snail

    Contributed on Aug 23 2021

    Silly Snail

    17 Answers  Avg Quality 5/10


    Grepper

    Features
    Reviews
    Code Answers
    Search Code Snippets

    Plans & Pricing
    FAQ
    Welcome
    Browsers Supported
    Grepper Teams

    Documentation

    Adding a Code Snippet

    Viewing & Copying Snippets

    Social

    Twitter LogoTwitter

    LinkedIn LogoLinkedIn

    Legal

    Privacy Policy
    Terms

    Contact

    support@codegrepper.com

    Я новичок, сейчас пытаюсь сделать игру на единстве. Прямо сейчас я пытаюсь создать код спавнера врагов, используя учебник: https://youtu.be/q1gAtOWTs- о

    Дело в том, что он использует этот метод под названием «Вызов повторения», который вызывает ошибку, указанную в моем заглавном вопросе. Есть ли какое-либо исправление, которое я могу сделать, чтобы устранить ошибку? Ниже мой код:

    public Transform[] spawnPoints;
    public GameObject[] enemies;
    int randomSpawnPoint, randomEnemy;
    public static bool spawnAllowed;
    
    // Start is called before the first frame update
    void Start()
    {
        spawnAllowed = true;
        InvokeRepeating = ("SpawnAnEnemy", 0f, 1f);
    }
    
    void SpawnAnEnemy()
    {
        if(spawnAllowed)
        {
            randomSpawnPoint = Random.Range(0, spawnPoints.Length);
            randomEnemy = Random.Range(0, enemies.Length);
            Instantiate(enemies[randomEnemy], spawnPoints[randomSpawnPoint].position, Quaternion.identity);
        }
    }
    

    Других ошибок нет, и я только изменил имена некоторых переменных (например, я использовал «врагов» вместо «монстров»), поэтому я не уверен, в чем проблема.

    1 ответ

    Лучший ответ

    InvokeRepeating — это метод. Вы должны вызвать метод, как показано ниже:

    InvokeRepeating("SpawnAnEnemy", 0f, 1f);
    

    То, что вы сделали в качестве прикрепленного кода, присвоило ему значение Tuple, которое неверно.

    InvokeRepeating = ("SpawnAnEnemy", 0f, 1f);
    


    2

    Yong Shun
    10 Апр 2022 в 13:35

    Понравилась статья? Поделить с друзьями:
  • Error cs1529 unity
  • Error cs1525 unexpected symbol void
  • Error cs1525 unexpected symbol public
  • Error cs1525 unexpected symbol expecting
  • Error cs1525 unexpected symbol end of file