Страница 1 из 1

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

СообщениеДобавлено: 19 фев 2021, 02:53
Flidi
Есть 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. Но так и не понял как правильно надо написать, что бы оно заработало.
За раня благодарю.

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

СообщениеДобавлено: 19 фев 2021, 04:31
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

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

СообщениеДобавлено: 19 фев 2021, 05:38
waruiyume
Ходят легенды, что если правильно писать согласные, то сразу всё заработает.

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

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

СообщениеДобавлено: 19 фев 2021, 11:20
Flidi
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, а не охота и рыбалка.

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

СообщениеДобавлено: 19 фев 2021, 11:33
Flidi
Я знаю что оно ругается на MonoBehaviour . Но если его убрать то не будет работать transform. По этому и спросил как правильно брать в таких случаях переменные из других скриптов. Примеры з GetComponent и AddComponent я не могу понять, а точней их синтаксис.

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

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

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

Vector3 moveCam = TransformFunctions.move;

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

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

СообщениеДобавлено: 19 фев 2021, 12:03
seaman
Я не могу понять синтакс.

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

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

СообщениеДобавлено: 19 фев 2021, 12:25
Flidi
seaman писал(а):
Я не могу понять синтакс.

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


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

Ты даже не читал тему, что бы давать такие советы. Есть синтакс С#, а есть синтаксис элемента. И если ты не не обращал внимания то любая документация делается на отебись. Что и почему там никто не расписывает.

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

СообщениеДобавлено: 19 фев 2021, 14:30
Saltant
waruiyume писал(а):
Ходят легенды, что если правильно писать согласные, то сразу всё заработает.

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

Че ты так переживаешь, троль задал вопрос и соответственно получил такой же трольский ответ. Это именно так работает в интернетах.

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

СообщениеДобавлено: 19 фев 2021, 14:58
Flidi
Спасибо всем эгоистичным троллям, которые решили троллить вместо того что бы помочь... знайте, вы бесполезный мусор. Живите теперь з этим.

А для тех кто учиться и возникла проблема. Знайте и не забывайте , когда удаляете скрипт из объекта и ставите его потом назад. Надо заново перепроверят пути, точней созданные вами ячейки под об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.

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

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

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

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


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

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

Знай! Ты на... не кому не нужное ...! Писать не кому не нужный бред... и тролить в темах где людям нужна помощь, это максимум на что ты способен! Жизнь твоя ... и ты ...! Живи з этим!

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

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

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

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

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

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


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

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

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

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

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

Ты всё еще тут? Если тебя не кормить, ты от голодухи убежишь под свой мост обратно?