UNITY Как перенести значение из одного скрипта в другой скрипт?

Уже гуглил как это делать, но ничего не выходит. Также и смотрел этот вопрос на Стэке, но обьяснили очень криво. Вообще не понимаю, что не так. Я хочу взять и перенести значение переменной speed

Первый скрипт объекта под названием Model, куда я хочу положить значение переменной speed:

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

public class ModelAnimation : MonoBehaviour
{
    Rigidbody Model;

    void Start()
    {
        Model = GetComponent<Rigidbody>();
        GameObject Player = GameObject.Find("Player");
        Rigidbody modelSpeed = Model.GetComponent<Rigidbody>();
        float speed = Player.speed;
    }
}

Второй скрипт из объекта под названием Player, откуда я хочу взять значение переменной speed

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

public class PlayerMove : MonoBehaviour
{   
    public float speed;
    public float rotate;

    Rigidbody Player;

    void Start()
    {
        Player = GetComponent<Rigidbody>();
    }

    void Update()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical") + 1.5f;

        Player.transform.Translate(Vector3.forward * moveVertical * speed * Time.deltaTime);
        Player.transform.Rotate(Vector3.up * moveHorizontal * rotate * Time.deltaTime);
    }
}

Мне пока самое главное хотя бы вывести это значение, чтобы убедиться, что всё работает.


Ответы (1 шт):

Автор решения: Арман

Объясню попроще.
Если например вы говорите маме или жене

Иду в гости к другу.

для начала надо её объяснить кто такой друг. Для этого вы в начале её говорите:

Мой лучший друг - Сергей, живёт в ......


Примерно тоже самое происходит тут.
Скрипту ModelAnimation вы говорите так:

Скрипт PlayerMove мой друг, живёт в ...... Бери оттуда переменную speed, он не обидится.

:-)


А теперь на деле.

Скрипт выглядит таким -

public class ModelAnimation: MonoBehaviour
{
    public PlayerMove playerMoveScript;

    ...

    void Start()
    {
        float speedInAnimation = playerMoveScript.speed;
    }
}

Только не забудьте в конце добавить скрипт через Inspector.


П.Н.
Я прикрепил скрипт к объекту под названием SceneManager. Вместо этого у вас на картинке должен быть Player.

→ Ссылка