C # Unity пространство имен » уже содержит определение для

#c# #unity3d

#c# #unity3d

Вопрос:

Я изучаю модификаторы доступа и наткнулся на следующую ошибку в своем коде. Может кто-нибудь объяснить мне и помочь решить эту проблему? Активы Тесты Скрипты modificadoracesso.cs(40,7): ошибка CS0101: пространство имен ‘< глобальное пространство имен >’ уже содержит определение для ‘Felino’

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

public class modificadoracesso : MonoBehaviour
{

    Felino gatoFase1; // criar objeto
    Felino gatoFase2;
    Filha fi;

    // Start is called before the first frame update
    void Start()
    {
        gatoFase1 = new Felino (); //objeto
        gatoFase2 = new Felino ();
        fi = new Filha();

        //gatoFase1.nome = "mark";
        gatoFase1.ataque();
        gatoFase1.corPelo = "Preto";
        gatoFase1.forca = 100;

        //gatoFase2.nome = "Zuck";
        gatoFase2.corPelo = "Marrom";
        gatoFase2.ataque();

        fi.acessa();

    }

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

class Felino : MonoBehaviour
{

    //Características = atributos
    //protected trabalha dentro a classe ou dentro de uma classe filha
    protected string nome;
    public string corPelo;
    public int forca;

    //Ações = métodos
    public void ataque()
    {
        print("Ataquei");
    }

}

class Filha : Felino
{
    public void acessa()
    {
        nome = "Gato";
    }
}
  

Я искал некоторые ответы, но пока ничего не работает

Комментарии:

1. Часть глобального пространства имен связана с тем, что у вас нет пространства имен в вашем коде. Однако я не понимаю, почему у вас есть дубликат Felino .

2. я бразилец, и я не понял предложение «пространство имен», может ли это показать мне практическим способом?

3. каким будет <глобальное пространство имен>?

Ответ №1:

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

Попробуйте это:

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

namespace ToDyToScAnO // <-- This is a namespace
{
  public class modificadoracesso : MonoBehaviour
  {

    Felino gatoFase1; // criar objeto
    Felino gatoFase2;
    Filha fi;

    // Start is called before the first frame update
    void Start()
    {
        gatoFase1 = new Felino (); //objeto
        gatoFase2 = new Felino ();
        fi = new Filha();

        //gatoFase1.nome = "mark";
        gatoFase1.ataque();
        gatoFase1.corPelo = "Preto";
        gatoFase1.forca = 100;

        //gatoFase2.nome = "Zuck";
        gatoFase2.corPelo = "Marrom";
        gatoFase2.ataque();

        fi.acessa();

    }

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

class Felino : MonoBehaviour
{

    //Características = atributos
    //protected trabalha dentro a classe ou dentro de uma classe filha
    protected string nome;
    public string corPelo;
    public int forca;

    //Ações = métodos
    public void ataque()
    {
        print("Ataquei");
    }

}

 class Filha : Felino
 {
    public void acessa()
    {
        nome = "Gato";
    }
 }
}
  

Ответ №2:

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

Ответ №3:

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