Вызвать переменную из другого класса
Всем доброго. Пытаюсь программировать на С#, но уперся уже несколько дней — не могу вызвать переменную из другого («а») из другого класса («Class1′).
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 < class Program < static void Main(string[] args) < new Class1(); double b = Class1.a; Console.WriteLine("a = ", b); while (true) < try < string command = Console.ReadLine(); if (command == "stop") < break; >> catch (System.Runtime.InteropServices.COMException) < >> > > >
Класс, от которого надо взять значение переменной «а» максимально упрощен
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 < public class Class1 < public double a = 179; >>
Пробовал гуглить, яндексить и т. д. — не помогло.
Как вызвать переменную или метод другого класса через строку?
У меня есть множество классов (Страны) с одинаковыми названиями переменных. И есть другой класс который выводит информацию об этих классах. Сейчас пользуюсь таким методом: При вызове инфо класса страна передает ему свое имя через строку а в инфо классе уже делаю.
void Info(string Country) < if(Country == "Italy")< Text.text = Italy.NameOfVariable; >else if(Country == "Russia") < Text.text = Russia.NameOfVariable; >>
Но так как классов много будет очень много лишнего кода, скажите как можно использовать универсальный метод чтобы брать переменную, если это возможно, может быть и не через строку.
- Вопрос задан более трёх лет назад
- 2606 просмотров
Комментировать
Решения вопроса 1
Denis Gaydak @MrMureno Куратор тега Unity
VR for all
ответьте почему у вас множество классов, а не один класс Country, на основе которого сделали себе объект для России и Италии и так далее?
у них у всех будет одинаковые переменные..
public class Country < public string Name; //и другие нужные поля под страну >/////////// //создаем себе объект класса Country russia = new Country(); russia.Name = "Russia"; ////////// //и вот собственно во все инфо и подобное отдаете объект класса Country //в котором все содержиться void Info(Country currentCountry)
конечно еще есть struct вместо класса. и про наследование можно поговорить если будет что то уникальное для каких-то стран.
но вам еще видимо рано такое..
но в общем то, если сильно все упростить, вы просто не использовали ООП — создав на каждую страну свой собственный класс.
Как вызвать переменную из другого класса?
Ошибка: CS1061 ‘GameObject» не содержит определения для «HealthWall» и не удалось найти метод расширения «HealthWall», принимающий тип «GameObject» в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
- Вопрос задан более трёх лет назад
- 1223 просмотра
Комментировать
Решения вопроса 1

Denis Gaydak @MrMureno Куратор тега Unity
VR for all
у вас так и не понятно какую переменную из какого скрипта вы хотите вызвать.
и второй кусок кода — не класс, а просто пару строчек
но в общем то случае..если вам нужна глобальная переменная сделайте
public static float HealthWall = 100;
тогда сможете обращаться к ней GameController.HealthWall из любого скрипта
если же хочется не статичными переменными..то или читайте про синглтон (может вам под архитектуру подойдет)
или просто банально ищите через Find или FindObjectOfType — объект с нужным скриптом (если они у вас в сцене)
пока вообще не понятно что куда вы хотите «дернуть» и зачем..отсюда вытекает что толком и не понятно — что вам подсказать)
Ответ написан более трёх лет назад
Alon Mix @alon_mix Автор вопроса
Дак просто во втором скрипте и ничего нет.
Вот скрипт куда мы вызываем. Как мне обьяснили, но способ нехрена не идет. Сейчас ваш попробую.
public class II : MonoBehaviour public GameObject GameController;
GameObject go = GameObject.Find(«GameController»);
GameController gameController = go.GetComponent();
float courrentSpeed = GameController.HealthWall;

Denis Gaydak @MrMureno Куратор тега Unity
все правильно вам объяснили..и должно все отлично работать, разве что в конце
float courrentSpeed = gameController.HealthWall;
от найденного компонента (класса) переменную берем
то что вы указали — должно было выдавать ошибку при компиляции вообще то..
плюс учтите что
GameObject go = GameObject.Find(«GameController»); найдет только в случае точного совпадения имени и если объект активен (не отключен в иерархии сцены)
Alon Mix @alon_mix Автор вопроса
Denis Gaydak, Именно так. У меня скрипт с обьектом называются GameController.Может проблема в этом? И они лежат на сцене. Только мне ошибку компиляции не пишет, только при запуске сцены о том, что нет ссылки на обьект и выводит как раз такие строку с float courrentSpeed = gameController.HealthWall;
float courrentSpeed = gameController.HealthWall;
от найденного компонента (класса) переменную берем
Так и делаю и не понимаю что не так, пишет про ошибку выше сказанную.

Denis Gaydak @MrMureno Куратор тега Unity
не нашло такого скрипта на объекте..возможно у вас есть еще один объект с таким названием в сцене, и нашло GameObject не тот..
вам бы глянуть что оно нашло в
GameObject go = GameObject.Find(«GameController»);
это ж публичное поле..так что посмотреть на что ссылается — public GameObject GameController; проблем быть не должно не каких..
одинаковое название — может конечно багуля в движке, но на моей ппамяти скрипт и объект одинаково называть — не вызывает никаких проблем.
Как использовать переменную из одного класса в другом с помощью указателей?
Я давно не живу в русско язычной стране, так что могут быть ошибки.
У меня такая проблема.
Мне надо создать два класса и третьим классом этими двумя классами управлять. Но у меня ни чего не получается.
Вот пример.
class car
privat:
int KmReport
public
void setKmReport()
getKmReport(void)
>;
class Drive
public:
int drive_length(* Car);
>;
Вот у нас есть класс Car и в ней в private есть переменная KmReport (то есть сколько км машина проехала). C помощью get и set я добираюсь до этой переменной.
Класс drive своего рода управляющий. То есть при введение drive_length через cin я должен изменить проеденный путь в классе Car.
1. Вопрос должен быть class drive , friend class?
void Auto::setKmReport()
KmReport =0 // машина не сколько не проехала первоначально
>
Auto::getKmReport(void)
return KmReport;
>
// с этого момента я не увер что я делаю.
int Drive::drive_length(*Car)
int value;
cout cin >> value;
// если это вообще правильно(все выше стоящие)
>
