Как правильно брать динамичные переменые из других скриптов?

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

Как правильно брать динамичные переменые из других скриптов?

Сообщение Flidi 19 фев 2021, 02:53

Есть 2 скрипта.

В первом я делаю движения кубика через кнопки. Координаты кубика вставляю в move .
Второй скрипт это камера... через скрипт я хочу привязать координаты камеры до кубика. что бы камера двигалась вместе з кубиком. Но суть проблемы что я никак не могу взять з первого скрипта координаты.

!!!(я знаю что камеру можна просто перетащить на кубик или использовать Синемашина)!!! Это я взял чисто для того что бы разобраться и научиться работать з передачей динамичных данных из одного скрипта в другой.

Первый скрипт. public Vector3 move; который я хочу взять и передать в второй скрипт.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class TransformFunctions : MonoBehaviour
{
    public float moveSpeed = 10f;
    public float turnSpeed = 50f;
    public Vector3 move;
    public Vector3 rotation;

   
    void Update()
    {
     
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        float jump = Input.GetAxis("Jump");

        float MouseX = Input.GetAxis("Mouse X");
        float MouseY = Input.GetAxis("Mouse Y");

         move = new Vector3(horizontal, jump , vertical);
         rotation = new Vector3(- MouseY, MouseX );
       
        transform.Translate(move * moveSpeed * Time.deltaTime);
        transform.Rotate(rotation, turnSpeed * Time.deltaTime);

    }
}


Второй скрипт.. Где я взятый из первого скрипта public Vector3 move; хочу вставить в координаты камеры. там где transform.Translate(moveCam);

using UnityEngine;
using System.Collections;

public class CameraLookAt : MonoBehaviour
{

public Transform target;

public Vector3 moveCam;
private TransformFunctions NewMoveCam;


void Start()
{

}

void Update()
{
NewMoveCam = new TransformFunctions(); <--------------------- Вот здесь проблема
moveCam = NewMoveCam.move;
transform.LookAt(target);
transform.Translate(moveCam);
Debug.Log("move" + moveCam);
}
}

Дает ошибку(предупреждение).

You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor ()
TransformFunctions:.ctor () (at Assets/Scripts/Test/Expert/Move/TransformFunctions.cs:12)
CameraLookAt:Update () (at Assets/Scripts/Test/Expert/Move/CameraLookAt.cs:20)

Ну и координаты

move(0.0, 0.0, 0.0)
UnityEngine.Debug:Log (object)
CameraLookAt:Update () (at Assets/Scripts/Test/Expert/Move/CameraLookAt.cs:24)

Я читал про GetComponent и AddComponent. Но так и не понял как правильно надо написать, что бы оно заработало.
За раня благодарю.
Flidi
UNец
 
Сообщения: 7
Зарегистрирован: 19 фев 2021, 02:37

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Saltant 19 фев 2021, 04:31

Flidi писал(а):вместе з кубиком.... взять з первого... работать з передачей...

Ходят легенды, что если правильно писать согласные, то сразу всё заработает.

Ну а если еще и на эту строчку обратить внимание "You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all" - то вообще будет всё отлично!

https://docs.unity3d.com/ru/current/Scr ... onent.html
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 1528
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
Skype: saltant1989
  • Сайт

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение waruiyume 19 фев 2021, 05:38

Ходят легенды, что если правильно писать согласные, то сразу всё заработает.

Очень надеюсь, что на англоязычных форумах, вас, как не нэйтив спикера, тоже всё время, так ссаными тряпками тыкают. Должна же быть хоть какая-то справедливость.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 5758
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Flidi 19 фев 2021, 11:20

Saltant писал(а):
Flidi писал(а):вместе з кубиком.... взять з первого... работать з передачей...

Ходят легенды, что если правильно писать согласные, то сразу всё заработает.

Ну а если еще и на эту строчку обратить внимание "You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all" - то вообще будет всё отлично!

https://docs.unity3d.com/ru/current/Scr ... onent.html



Если вы не уважаемый об этом "Как правильно брать динамичные переменые из других скриптов?" и об этом "переменные". То знайте! Длина темы ограничена, и надо чем то жертвовать. А про кубики... это форум Unity3D, а не охота и рыбалка.
Последний раз редактировалось Flidi 19 фев 2021, 12:43, всего редактировалось 2 раз(а).
Flidi
UNец
 
Сообщения: 7
Зарегистрирован: 19 фев 2021, 02:37

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Flidi 19 фев 2021, 11:33

Я знаю что оно ругается на MonoBehaviour . Но если его убрать то не будет работать transform. По этому и спросил как правильно брать в таких случаях переменные из других скриптов. Примеры з GetComponent и AddComponent я не могу понять, а точней их синтаксис.

Как я логично вижу компоненты GetComponent и AddComponent

Вместо
NewMoveCam = new TransformFunctions();

NewMoveCam = GetComponent.TransformFunctions;
NewMoveCam = GetComponent.TransformFunctions.move;
NewMoveCam = GetComponent(TransformFunctions.move);

Vector3 moveCam = TransformFunctions.move;

Но так они не работают. Я не могу понять синтакс.
Flidi
UNец
 
Сообщения: 7
Зарегистрирован: 19 фев 2021, 02:37

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение seaman 19 фев 2021, 12:03

Я не могу понять синтакс.

Почитайте уроки по программированию на C#, если уж примеры в документации непонятны
seaman
Адепт
 
Сообщения: 8295
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Flidi 19 фев 2021, 12:25

seaman писал(а):
Я не могу понять синтакс.

Почитайте уроки по программированию на C#, если уж примеры в документации непонятны


Можешь дальше шагать лесом, если не собирался помогать. Я как-то без эгоистических ... обойдусь. Зачем по твоему форум? Что бы эгоисты писали чуш тем кто просит помощи? Вот скажи тебе понравиться когда ты будешь тонуть, а человек з берега будет подсказывать... руками работай... греби к берегу... и снимать это все на камеру? Зачем ты зашел в эту тему... цель?

Ты даже не читал тему, что бы давать такие советы. Есть синтакс С#, а есть синтаксис элемента. И если ты не не обращал внимания то любая документация делается на отебись. Что и почему там никто не расписывает.
Flidi
UNец
 
Сообщения: 7
Зарегистрирован: 19 фев 2021, 02:37

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Saltant 19 фев 2021, 14:30

waruiyume писал(а):
Ходят легенды, что если правильно писать согласные, то сразу всё заработает.

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

Че ты так переживаешь, троль задал вопрос и соответственно получил такой же трольский ответ. Это именно так работает в интернетах.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 1528
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
Skype: saltant1989
  • Сайт

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Flidi 19 фев 2021, 14:58

Спасибо всем эгоистичным троллям, которые решили троллить вместо того что бы помочь... знайте, вы бесполезный мусор. Живите теперь з этим.

А для тех кто учиться и возникла проблема. Знайте и не забывайте , когда удаляете скрипт из объекта и ставите его потом назад. Надо заново перепроверят пути, точней созданные вами ячейки под обeкт.

Таким образом правильный скрипт CameraLookAt для камеры.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class CameraLookAt : MonoBehaviour
{

    public Transform target;

    public Vector3 moveCam;
    public TransformFunctions NewMoveCam;
    Rigidbody myRigidbody;

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

    void Update()
    {

        moveCam = NewMoveCam.move;
        transform.LookAt(target);
        myRigidbody.velocity = moveCam* NewMoveCam.moveSpeed;
        Debug.Log("move" + moveCam);
    }
}


ну и скрипт TransformFunctions для объекта кубика (может кому пригодиться)

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class TransformFunctions : MonoBehaviour
{
    public float moveSpeed = 10f;
    public float turnSpeed = 50f;
    public Vector3 move;
    public Vector3 rotation;

    // ============== MOVEMENT ======================
    // Vector3 lookDirection = new Vector3(1, 0, 0);
    // Vector3 currentInput;

    void Update()
    {
        //Mozna tak
        /*
        if (Input.GetKey(KeyCode.UpArrow))
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.DownArrow))
            transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.LeftArrow))
            transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.RightArrow))
            transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
       
        */


        //A mozna tak
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        float jump = Input.GetAxis("Jump");

        float MouseX = Input.GetAxis("Mouse X");
        float MouseY = Input.GetAxis("Mouse Y");

/*
        Debug.Log("Horizontal" + horizontal);
        Debug.Log("Vertical" + vertical);
        Debug.Log("Jump" + jump);
        Debug.Log("Mouse X" + MouseX);
        Debug.Log("Mouse Y" + MouseY);
*/

         move = new Vector3(horizontal, jump , vertical);
         rotation = new Vector3(- MouseY, MouseX );
       
        transform.Translate(move * moveSpeed * Time.deltaTime);
        transform.Rotate(rotation, turnSpeed * Time.deltaTime);

    }
}


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

[url=http://www.fotolink.su/v.php?id=694ff05d16db511ee42d96218a6c6146]
Изображение
1908x920(197.03 kB)[/url]
www.fotolink.su


А цель которую я ставил, научиться передавать динамичные данные из одного объекта и скрипта в другой. Теперь камера двигается за объектом(добавил тело) без использования стандартного метода Unity.
Flidi
UNец
 
Сообщения: 7
Зарегистрирован: 19 фев 2021, 02:37

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение seaman 19 фев 2021, 22:44

Слава богу - научился перетаскивать в инспектор что надо. Правда ничему больше не научился.
И про непонятки синтаксиса забыл, и про new mono, и решение сам же написал в первом же вопросе.
Только злобу вылил. Злобный троль...
seaman
Адепт
 
Сообщения: 8295
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Flidi 23 фев 2021, 15:46

seaman писал(а):Слава богу - научился перетаскивать в инспектор что надо. Правда ничему больше не научился.
И про непонятки синтаксиса забыл, и про new mono, и решение сам же написал в первом же вопросе.
Только злобу вылил. Злобный троль...


Зачем эта чушь?... Читать тему надо было внимательно! Эта проблема и вопрос появился именно в момент изучения уроков по Юнити! А навести человека на правильный путь, показать его ошибку н.... надо. Лучше плюнуть в морду и поржать, что то кто та, чего то не знает. Эгоизм, лицемерие... наше все! Проще зайти к человеку в тему и послать его н... Вот только вопрос, а н.... ты сюда пришел если не собирался помогать? О чем это говорит? Не о психологических проблемах в человека?

Давай жги... еще больше Эгоизма и лицемерия. Давай прояви себя, прояви свою внутреннюю сущность, выплесни ее, ты ведь этого хочешь!.. Ты ведь для этого продолжаешь писать чушь и жить. Там где ты н.... не кому не нужен. (popcorn) (popcorn1)

Знай! Ты на... не кому не нужное ...! Писать не кому не нужный бред... и тролить в темах где людям нужна помощь, это максимум на что ты способен! Жизнь твоя ... и ты ...! Живи з этим!
Flidi
UNец
 
Сообщения: 7
Зарегистрирован: 19 фев 2021, 02:37

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Alkos26Rus 23 фев 2021, 23:08

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

Вот только получается что ты выплескиваешь гавно на всех.
Ты не знаешь основ работы с юнити, в интернете куча начальных уроков которые ты должен был изучать, хотя бы чтоб хоть ссылки уметь накидывать. И тебе правильно на это указали. А создавать посты по всяким пустякам, этот форум не помойка.
Единица - ноль
Аватара пользователя
Alkos26Rus
UNITрон
 
Сообщения: 167
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Flidi 25 фев 2021, 01:10

Alkos26Rus писал(а):
Давай жги... еще больше Эгоизма и лицемерия. Давай прояви себя, прояви свою внутреннюю сущность, выплесни ее, ты ведь этого хочешь!

Вот только получается что ты выплескиваешь гавно на всех.
Ты не знаешь основ работы с юнити, в интернете куча начальных уроков которые ты должен был изучать, хотя бы чтоб хоть ссылки уметь накидывать. И тебе правильно на это указали. А создавать посты по всяким пустякам, этот форум не помойка.


Ты наверное форум и раздел попутал... Как и другие умники вроде тебя. Напомню! Список форумов ‹ Unity3D ‹ Почемучка (Почемучка Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.). И вали (полная Ж). И не неси х..ни. Для тебя наверное не существует понятия... как запутаться...!? Ты как и другие искал повода доебаться. Я в шоке от количества эгоистических у...! Тему надо закрывать!
Flidi
UNец
 
Сообщения: 7
Зарегистрирован: 19 фев 2021, 02:37

Re: Как правильно брать динамичные переменые из других скриптов?

Сообщение Saltant 25 фев 2021, 02:59

Flidi писал(а):
Alkos26Rus писал(а):
Давай жги... еще больше Эгоизма и лицемерия. Давай прояви себя, прояви свою внутреннюю сущность, выплесни ее, ты ведь этого хочешь!

Вот только получается что ты выплескиваешь гавно на всех.
Ты не знаешь основ работы с юнити, в интернете куча начальных уроков которые ты должен был изучать, хотя бы чтоб хоть ссылки уметь накидывать. И тебе правильно на это указали. А создавать посты по всяким пустякам, этот форум не помойка.

Тему надо закрывать!

Ты всё еще тут? Если тебя не кормить, ты от голодухи убежишь под свой мост обратно?
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 1528
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
Skype: saltant1989
  • Сайт


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Saltant, Yandex [Bot] и гости: 28