Ошибка cs0116 unity

I’m pretty new at C# scripting and the whole Unity thing.

I’ve watched tutorials and read a dozen forums from users that got the same error and I’ve tried to fix it
but I feel like I’m messing it up more.

Unity is saying the error is on line 16 column 10, visual study can’t pick up any errors.
It was meant to be a simple script to make my character move but it’s getting real difficult to solve whatever is happening.

What Unity is saying :

Capture

My script:

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

public class NewBehaviourScript : MonoBehaviour
{
    // Start is called before the first frame update
    void Start(int mDir)
    { }
    private float speed = 2.0f;
    public GameObject character;
}


    // Update is called once per frame
    void Update()
{

    if (Input.GetKey(KeyCode.D))
    {
        transform.position += Vector3.right * speed * Time.deltaTime;
    }
    if (Input.GetKey(KeyCode.A))
    {
        transform.position += Vector3.left * speed * Time.deltaTime;
    }
    if (Input.GetKey(KeyCode.W))
    {
        transform.position += Vector3.up * speed * Time.deltaTime;
    }
    forward;
    if (Input.GetKey(KeyCode.S))
    {
        transform.position += Vector3.down * speed * Time.deltaTime;
    }
}

asked Dec 15, 2020 at 8:52

SebbyBoi's user avatar

4

All members (field, property and method) have to be in a class. In your case, the method Update isn’t in a class. Maybe you close the class NewBehaviourScript too early. More information in the official documentation.

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

namespace MyProject
{
    public class NewBehaviourScript : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start(int mDir)
        {
        }

        private float speed = 2.0f;
        public GameObject character;

        // Update is called once per frame
        void Update()
        {
            if (Input.GetKey(KeyCode.D))
            {
                transform.position += Vector3.right * speed * Time.deltaTime;
            }
            if (Input.GetKey(KeyCode.A))
            {
                transform.position += Vector3.left * speed * Time.deltaTime;
            }
            if (Input.GetKey(KeyCode.W))
            {
                transform.position += Vector3.up * speed * Time.deltaTime;
            }
            forward;
            if (Input.GetKey(KeyCode.S))
            {
                transform.position += Vector3.down * speed * Time.deltaTime;
            }
        }
    } // Close the class NewBehaviourScript
} // Close the namespace

Little advice, you can also encapsulate the class in namespace classify classes. Generally, the namespace name is the project’name + folder structure.

IndieGameDev's user avatar

IndieGameDev

2,8953 gold badges15 silver badges29 bronze badges

answered Dec 15, 2020 at 8:56

vernou's user avatar

vernouvernou

6,2724 gold badges29 silver badges57 bronze badges

I’ve got this error and need help, it is on (92,28), but the error has remained, any help would be appreciated, Im relatively new to programming in c# so I’m not entirely familiar with the programming language yet, so this is probably a beginner question, but even so, an answer and and explanation as to what i did wrong as so I can improve upon myself is always appreacited.

using UnityEngine;

[CreateAssetMenu(fileName = "Pokemon", menuName = "Pokemon/Create New Pokemon")]

public class PokemonBase : ScriptableObject
{
    [SerializeField] string name;

    [TextArea]
    [SerializeField] string description;

    [SerializeField] Sprite frontSprite;
    [SerializeField] Sprite backSprite;

    [SerializeField] PokemonType type1;
    [SerializeField] PokemonType type2;

    //Base Stats
    [SerializeField] int maxHp;
    [SerializeField] int attack;
    [SerializeField] int defense;
    [SerializeField] int spAttack;
    [SerializeField] int spDefense;
    [SerializeField] int speed;

    [SerializeField] List<LearnableMove> learnableMoves;


    public string Name
    {
        get { return name; }
    }

    public string Description
    {
        get { return description; }
    }

    public Sprite FrontSprite
    {
        get { return frontSprite; }
    }

    public Sprite BackSprite
    {
        get { return backSprite; }
    }

    public PokemonType Type1
    {
        get { return type1; }
    }

    public PokemonType Type2
    {
        get { return type2; }
    }

    public int MaxHp
    {
        get { return maxHp; }
    }

    public int Attack
    {
        get { return attack; }
    }

    public int Defense
    {
        get { return defense; }
    }

    public int SpAttack
    {
        get { return spAttack; }
    }

    public int SpDefense
    {
        get { return spDefense; }
    }

    public int Speed
    {
        get { return speed; }
    }

}

public List<LearnableMove> LearnableMoves 
{
    get { return learnableMoves; }
}

[System.Serializable]

public class LearnableMove
{
    [SerializeField] MoveBase moveBase;
    [SerializeField] int level;

    public MoveBase Base
    {
        get { return moveBase; }
    }

    public int Level
    {
        get { return level; }
    }
}

public enum PokemonType
{
    None,
    Normal,
    Fire,
    Water,
    Grass,
    Electric,
    Ice,
    Fighting,
    Poison,
    Ground,
    Flying,
    Physic,
    Bug,
    Rock,
    Ghost,
    Dragon
} ``` 

введите описание изображения здесь. Я следил за инструкциями по созданию игры Brackeys из YouTube и я застрял на видео нет. 7 и я не могу понять, как решить проблему. Пожалуйста помоги.

ссылка на учебник

Код в 7:36

using UnityEngine;
using UnityEngine UI;

public class Score : MonoBehaviour
{
       public Transform player;
       public Text scoreText;

       void Update()
       {
            scoreText.text = player.position.z.ToString("0");
        }
}

2 ответа

Лучший ответ

Сначала проверьте вторую строку вашего кода. В using UnityEngine UI; отсутствует точка между UnityEngine и UI. Я считаю, что это суть вашей проблемы и вызывает появление двух других ошибок. Строка должна быть using UnityEngine.UI;.

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

Пожалуйста, перейдите по следующим двум ссылкам для получения информации о ваших двух кодах ошибок. Помните, что они всегда доступны через быстрый поиск в Google:

  • CS1002: эта ошибка означает, что вам не хватает точки с запятой ( ;). В C # точка с запятой требуется в конце почти всех строк. Глядя на ваш код, вы видите, что отсутствующая точка с запятой не находится в этом конкретном блоке кода, поэтому она должна быть в другом месте вашего кода. Чтобы найти его, самый простой способ — это зайти в окно консоли Unity и дважды щелкнуть строку с ошибкой или найти расположение сценария и номер строки в сообщении. Любой из них должен приблизить вас к отсутствующей точке с запятой.
  • CS0116: эта ошибка означает пространство имен, которое содержит что-то отличное от класса, структуры или другого пространства имен. Это означает, что структура вашего кода ошибочна. Снова перейдите к ошибке и посмотрите, сможете ли вы найти сценарий, в котором она содержится. Затем просмотрите структуру и убедитесь, что нет никаких областей, где что-то вроде метода выходит за пределы вашего класса (это обычное дело и может означает, что вы поместили метод непосредственно в пространство имен, что приведет к CS0116.

Надеюсь это поможет!

Изменить: подумайте еще немного о логике здесь, и это 100% вторая строка. Представьте, как компилятор это интерпретирует. На самом деле, когда вы пропускаете этот период, вы видите «две строчки».

using UnityEngine
UI;

Итак, он смотрит на это и говорит две вещи:

  1. После using UnityEngine отсутствует точка с запятой
  2. Вы должны сделать что-то в области пространства имен перед вашим классом, что запрещено

Довольно интересно, когда вы думаете о том, почему он говорит вам, что у вас есть обе эти ошибки.


3

Jee
12 Май 2020 в 06:30

Ошибка находится во второй строке вашего кода:

using UnityEngine;
using UnityEngine UI;

Следует изменить на:

using UnityEngine;
using UnityEngine.UI;

Вам понадобится период для доступа к другому пространству имен в пространстве имен UnityEngine.


3

Arcanum Astronaut
22 Июл 2020 в 18:24

C# Compiler Error

CS0116 – A namespace cannot directly contain members such as fields or methods.

Reason for the Error

This is one of the simplest of the errors that you will notice in C#. You will receive this error when you have declared a field or method directly under namespace instead of the class.

In C#, a namespace can contain only other namespaces, classes, Enums and structs and not fields, variables or methods directly under them.

Try compiling the below code snippet and you will immediately see the C# Compiler error CS0116.

namespace DeveloperPublishNamespace
{
    public int Field1;
    public class DeveloperPublish
    {
        public static void Main()
        {

        }
    }
}

Error CS0116 A namespace cannot directly contain members such as fields or methods ConsoleApp1 C:UsersSenthilsourcereposConsoleApp1ConsoleApp1Program.cs 3 Active

C# Error CS0116 – A namespace cannot directly contain members such as fields or methods

Solution

You can fix this by moving the fields or methods from the namespace into a class.

Помогите со скриптом

Помогите со скриптом

Я только учусь писать скрипты.Вообщем кому не сложно можете подсказать скрипт на то, что когда ты смотришь на объект долго то он тебя убивает(как в слендере).Прошу,заранее благодарен.

goodrussianguy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2014, 20:05

Re: Помогите со скриптом

Сообщение Good1101 04 июн 2014, 21:01

Возможно OnBecameVisible чем то поможет

Используется csharp

void OnBecameVisible()
    {
        player.health = 0;
    }
 

Как тут стрелять?

Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: Помогите со скриптом

Сообщение GameWorld 04 июн 2014, 23:46

Вешаешь этот скрипт на объект.

Используется csharp

public float health = 100;//Жизнь игрока

    void Update()
    {
        if (!renderer.isVisible) //Если пропал из камеры
        {
            health = 100; // Сбрасываем жизнь на 100
        }
    }

    void OnGUI()
    {
        if (renderer.isVisible && health != 0) //Если Слендер в камере и жзнь не равна нулю
        {
            health -= Time.deltaTime * 5; //Уменьшаем жизнь
            GUI.TextArea(new Rect(10, 10, 200, 20), «Health: « + health);//выводим на экран
        }

        if (health == 0) //Если жизнь на нуле
        {
            GUI.TextArea(new Rect(10, 10, 200, 20), «Your dead!»); //Выводим сообщение.
            health = 0;
        }
    }

«Улучшение работающего продукта — приводит к его ухудшению.»

Аватара пользователя
GameWorld
Старожил
 
Сообщения: 620
Зарегистрирован: 11 янв 2011, 03:02
Skype: Alien3DModeller

Re: Помогите со скриптом

Сообщение goodrussianguy 05 июн 2014, 12:46

Простите что снова беспокою,но:
Assets/die.js(1,8): BCE0043: Unexpected token: float.
Я попытался вставить не в Java script а в C# script и там такое:
Assets/die.cs(1,14): error CS0116: A namespace can only contain types and namespace declarations
Assets/die.cs(3,10): error CS0116: A namespace can only contain types and namespace declarations
Assets/die.cs(11,10): error CS0116: A namespace can only contain types and namespace declarations

goodrussianguy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2014, 20:05

Re: Помогите со скриптом

Сообщение MF_Andreich 05 июн 2014, 12:53

А ты это просто в текст вставил без объявления класса 8-} ? Судя по ошибке — да…

Не надо так.

Это же внутренности класса. Нужно создать новый скрипт, и вставить это унутрь него, а не вместо него.

Смотрим:

Используется csharp

using UnityEngine;
using System.Collections;

public class die : MonoBehaviour {

        // Use this for initialization
        void Start () {

       
        }
        //вставить отсюды
        // Update is called once per frame
        void Update () {

       
        }
        //до сюды
}

З.Ы. И читать маны по скриптам C#. Ибо с таким

настроем ты слоника не продашь

уровнем знаний по теме, далеко не уедешь.

Holly Shovel Team

Аватара пользователя
MF_Andreich
Старожил
 
Сообщения: 924
Зарегистрирован: 20 июн 2013, 10:09
Откуда: Барнаул
Skype: mf_andreich
  • ICQ

Re: Помогите со скриптом

Сообщение goodrussianguy 05 июн 2014, 13:16

ГЛУБОЧАЙШЕ извиняюсь,но:
Assets/dead.cs(35,14): error CS0111: A member `die.Update()’ is already defined. Rename this member or use different parameter types

goodrussianguy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2014, 20:05

Re: Помогите со скриптом

Сообщение MF_Andreich 05 июн 2014, 13:25

:-? тяжело…
Update — это метод. Он может быть только один с таким названием (ну вообще не один, но должен тогда отличаться параметрами). Ошибка натолкнула меня на мысль, что ты вставил код не вместо, а рядом с тем куском, который я показал…

Holly Shovel Team

Аватара пользователя
MF_Andreich
Старожил
 
Сообщения: 924
Зарегистрирован: 20 июн 2013, 10:09
Откуда: Барнаул
Skype: mf_andreich
  • ICQ

Re: Помогите со скриптом

Сообщение goodrussianguy 05 июн 2014, 13:34

Вставил скрипт на игрока, смотрю монстру прямо в лицо и хоть бы что.В плотную подхожу тоже ничего,смотрит на меня и все.

goodrussianguy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2014, 20:05

Re: Помогите со скриптом

Сообщение MF_Andreich 05 июн 2014, 13:43

Продолжаем разговор. Данный скрипт вешается на то, что мы видим, а не на то, что у нас смотрит. В общем не рекомендую пока лезть в такие дебри, а начать с хело ворлд, изучения ООП как такового, C# и только потом приступать к скриптованию игры. Либо найти программиста.

Holly Shovel Team

Аватара пользователя
MF_Andreich
Старожил
 
Сообщения: 924
Зарегистрирован: 20 июн 2013, 10:09
Откуда: Барнаул
Skype: mf_andreich
  • ICQ

Re: Помогите со скриптом

Сообщение goodrussianguy 05 июн 2014, 13:52

Друг дал этот скрипт,но он тоже не работает вообщем пойду найду программиста.

Используется csharp

using UnityEngine;
using System.Collections;

public class Slender : MonoBehaviour
{

        private bool teleported;
        public GameObject slender;
        public float approximationSlenderMin, approximationSlenderMax, approximationSlender, approximationMinus, TeleportTimerMinus;
        public GameObject target;
        private float distance;
        private Vector3 SlenderPosition;
        public float TeleportTimer;
        private float TeleportTimerDown;
        public float _deadTimer;
        private float deadTimerDown;
        private Vector3 TargetPosition;
        public float MaxDistance;
        public NoiseEffect Effect;
        private Vector3 direction;
        public float DeadDistance;
        public GameObject light;
        void Start ()
        {

               
                deadTimerDown = _deadTimer;
                TeleportTimerDown = TeleportTimer;
                slender = gameObject;
                target = GameObject.FindGameObjectWithTag («Player»);
                SlenderPosition = slender.gameObject.transform.position;
        }

        void Update ()
        {

               
                approximationSlender = Random.Range (approximationSlenderMin, approximationSlenderMax);
                Distance ();
                TargetPosition = target.transform.position;
                slender.gameObject.transform.position = SlenderPosition;
                SlenderTeleport ();

               
                if (distance <= DeadDistance) {
                        DeadTimer ();  
                }      
                if (distance < MaxDistance) {
                        if ((Vector3.Dot (target.transform.forward, (slender.transform.position target.transform.position)) > 0) || (distance < 2)) {
                                Effect.enabled = true;
                                Effect.grainIntensityMin += 0.01f;
                                DeadTimer ();
                        } else {
                                deadTimerDown = _deadTimer;
                                if (Effect.grainIntensityMin > 0) {
                                        Effect.grainIntensityMin -= 0.05f;
                                } else {
                                        Effect.enabled = false;
                                }
                        }
                }
        }

        public void SlenderTeleport ()
        {
                if (TeleportTimerDown > 0)
                        TeleportTimerDown -= Time.deltaTime;
                if (TeleportTimerDown < 0)
                        TeleportTimerDown = 0;
                if (TeleportTimerDown == 0) {
                        SlenderPosition.x = (TargetPosition.x approximationSlender);
                        SlenderPosition.z = (TargetPosition.z approximationSlender);
                        direction = TargetPosition slender.transform.position;
                        direction.y = 0;
                        slender.transform.rotation = Quaternion.Slerp (slender.transform.rotation, Quaternion.LookRotation (direction), 1000 * Time.deltaTime);
                        if (TeleportTimer > 3) {
                                TeleportTimer -= TeleportTimerMinus;   
                        }

                        if (approximationSlenderMin > 1) {
                                approximationSlenderMax += approximationMinus;
                                approximationSlenderMin += approximationMinus;
                        }

                       
                       
                       
                        TeleportTimerDown = TeleportTimer;
                }
        }

        public void Distance ()
        {
                distance = Vector3.Distance (slender.transform.position, target.transform.position);
        }

        public void DeadTimer ()
        {
                if (deadTimerDown > 0)
                        deadTimerDown -= Time.deltaTime;
                if (deadTimerDown < 0)
                        deadTimerDown = 0;
                if (deadTimerDown == 0) {
                        Dead ();
                }
        }

        public void Dead ()
        {
                Destroy (target.gameObject);   
                light.SetActive(true);
        }      
}

goodrussianguy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2014, 20:05

Re: Помогите со скриптом

Сообщение goodrussianguy 05 июн 2014, 14:16

Может быть поможете последний раз?Я все вставил и вот что пишет:
MissingComponentException: There is no ‘Renderer’ attached to the «Slender» game object, but a script is trying to access it.
You probably need to add a Renderer to the game object «Slender». Or your script needs to check if the component is attached before using it.
die.OnGUI () (at Assets/die.cs:22)

goodrussianguy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2014, 20:05


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13



Понравилась статья? Поделить с друзьями:
  • Ошибка cs0104 unity
  • Ошибка cs0103 visual studio
  • Ошибка crycloud hunt showdown 0x60004
  • Ошибка cs0102 unity
  • Ошибка crycloud hunt showdown 0x4000c