TransWikia.com

Взаимодействие со скриптом из другого скрипта

Stack Overflow на русском Asked on August 30, 2021

Я пишу игру на юнити, возникла необходимость изменять значения одного скрипта, из другого, я знаю, что это делается с помощью делегатов, и проблем с компонентами типа Rigidbody не возникает. Но тот скрипт самописный, и я не знаю, ак правильно это организовать. Есть какие-то мысли?
P.S. я приложил скрин, какие параметры необходимо изменить в скрипте.
введите сюда описание изображения

UPD1: я добавил в скрипт вот такую строчку, следуя указаниям из вопроса, на который вы мне указали.

    public DialogInput script;

И получил вот эту ошибку
Assets/Scripts/disable_saydialog.cs(7,12): error CS0246: The type or namespace name ‘DialogInput’ could not be found (are you missing a using directive or an assembly reference?)
UPD2: https://pastebin.com/cYXMLJPX ссылка на скрипт Dialog Input

2 Answers

класс DialogInput находится в namespace Fungus поэтому в скрипте, где вы пишите

public DialogInput script;

нужно в самом верху добавить

using Fungus;

тогда ошибка Assets/Scripts/disable_saydialog.cs(7,12): error CS0246: The type or namespace name 'DialogInput' could not be found (are you missing a using directive or an assembly reference?) уйдёт.

Это нужно делать во всех скриптах, где вы используете ссылки на DialogInput, через GetComponent<> или как-то еще, иначе вы будете получать ошибку, как выше. Так как нужный класс будет просто-напросто не виден.

Более подробно про пространства имен тут: https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/namespaces/

Correct answer by luvjungle on August 30, 2021

Если вы хотите из первого скрипта изменить переменную во втором скрипте, то просто возьмите объект, на котором висит второй скрипт, у него получите компонент - сам второй скрипт, а там уже и переменную. В первом скрипте это выглядит примерно так:

GameObject_со_вторым_скриптом.GetComponent<Название_второго_скрипта>().название_переменной

Переменная естественно должна быть public. Если я что-то в вашем вопросе понял неправильно, напишите.

Answered by Максим Фисман on August 30, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP