Я не могу добавить компонент, потому что "есть ошибка", но я не вижу ее. Как я могу решить проблему? - PullRequest
0 голосов
/ 13 апреля 2019

Я работаю над игрой.Часть находится в автономном режиме, а другая - по сети.Я создал копию моего скрипта для работы в автономном режиме.В моем скрипте нет ошибки (monobehaviour), но когда я попытался добавить компонент в моем GameObject unity, выдается ошибка:

"Невозможно добавить компонент скрипта 'RocketOffline', так как класс скриптане может быть найден. Убедитесь, что нет ошибок компиляции и что имя файла и имя класса совпадают "

Я не вижу никаких ошибок в моем скрипте и имена совпадают (RocketOffline.cs VS RocketOffline : MonoBehaviour)

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

I 'У меня такая же проблема с другим скриптом, но я покажу только один из них

public class RocketOffline : MonoBehaviour
{
    public GameObject Explosion;

    private Vector3 Direction;
    private Color Couleur;
    private float vitesse;
    private float multiplieur;
    int NumPlayer;


    void Explose(Vector3 position)
    {
        ExplosionOffline instance = Instantiate(Explosion, position, new Quaternion()).GetComponent<ExplosionOffline>();
        instance.NumPlayer = NumPlayer;
        foreach (var SmokeEffect in GetComponentsInChildren<ParticleSystem>())
        {
            SmokeEffect.transform.parent = null;
            Destroy(SmokeEffect.gameObject, SmokeEffect.startLifetime);
            SmokeEffect.Stop();
        }
        Destroy(gameObject);
    }

    private void OnCollisionEnter(Collision collision)
    {
        Explose(transform.position);
    }

    private void OnTriggerExit(Collider other)
    {
        GetComponent<Collider>().isTrigger = false;

    }

    public void SetSpeed(Vector3 _Direction, float _Vitesse, JoueurOffline _Player)
    {
        Direction = _Direction;
        vitesse = _Vitesse;
        Couleur = _Player.Couleur;
        NumPlayer = _Player.NumPlayer;
    }

    void Start()
    {
        Rigidbody rigid = GetComponent<Rigidbody>();
        transform.eulerAngles = Vector3.forward * Mathf.Atan2(-Direction.x, Direction.y) * Mathf.Rad2Deg;
        rigid.velocity = Direction * vitesse;
        multiplieur = transform.localScale.y / 10;
        GetComponentInChildren<MeshRenderer>().material.color = Couleur;
    }

    void Update()
    {
        GetComponent<Rigidbody>().velocity = transform.up * vitesse;
        RaycastHit info;
        Physics.Raycast(new Ray(transform.position, GetComponent<Rigidbody>().velocity * Time.deltaTime), out info);
        if (info.distance < vitesse * Time.deltaTime * multiplieur/* && info.collider.gameObject != gameObject && info.collider.gameObject != player.gameObject*/)
        {
            Explose(info.point);
        }
    }
}

Я хочу добавить свой скрипт только на мой GameObject, как обычно на Unity.Но всегда есть одна и та же ошибка.Мой скрипт был протестирован на другом проекте и работает отлично.Я думаю, что это, вероятно, внутренняя ошибка единства.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

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

0 голосов
/ 13 апреля 2019

Да, это потенциально ошибка Unity.Если вы используете новую бета-версию 2019 года, просто сделайте отчет об ошибке :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...