Ошибка в Rigidbody.GetComponent<Rigidbody>();

Рейтинг: -3Ответов: 1Опубликовано: 28.01.2023

Есть код:

using UnityEngine;

public class MovePlayer : MonoBehaviour
{
    [SerializeField] private Rigidbody move;
    void Awake()
    {
        private Rigidbody _move = move.GetComponent<Rigidbody>();
    }
}

При компиляции в Unity3d, выдает две ошибки: CS1513 и CS1022.

При взятии в комментарий эту строку кода, компилируется без проблем: // private Rigidbody _move = move.GetComponent<Rigidbody>();

Как решить эту проблему, чтобы move.GetComponent<Rigidbody>(); работал?

Ответы

▲ 1Принят

Из показанного кода несовсем понятно, что вы хотите сделать.

Если хотите получить компонент текущего объекта, то это делается просто

public class MovePlayer : MonoBehaviour
{
    private Rigidbody body; // не нужно его сериализовать или делать публичным, так как в редакторе этот компонент и так доступен

    void Awake()
    {
        body = GetComponent<Rigidbody>();
    }
}

Если другого объекта, то как-то так

public class MovePlayer : MonoBehaviour
{
    [SerializeField] private GameObject otherObject; // сюда в Unity Editor навешивается ссылка на другой объект
    private Rigidbody otherBody;

    void Awake()
    {
        otherBody = otherObject.GetComponent<Rigidbody>();
    }
}

Собственно, ничего другого здесь не придумать, задача простейшая.

Ну и стоит подучить C# прежде чем далее углубляться в Unity, а именно стоит узнать:

  • Что такое классы и объекты
  • Что такое члены класса и модификаторы доступа
  • Что такое переменные в методах

В куске вашего кода вы пытаетесь объявить уже объявленный член класса внутри метода, это недопустимо и говорит только о том, что вы даже не подозреваете, что это недопустимо. Поэтому надо учить язык. Начните с простого, уделите пару вечеров и код станет намного понятнее. Все эти видосики на ютубе "Игра за 24 часа" - уловка, обман. Невозможно просто так взять и без понимания основ что-либо вменяемое написать.

Я сам очень хорошо знаю C#, но при изучении Unity у меня до сих пор возникают трудности. А каково вам, если даже основы языка не знаете?

Дополнительно, если вопрос касается передвижения персонажа, то почитайте этот ответ: