Как вызвать переменную из другого класса в c
Перейти к содержимому

Как вызвать переменную из другого класса в c

  • автор:

Как вызвать переменную в одном классе из другого класса? C#

Короче, если 2 класса. Первый и второй. Так вот, допустим, что во втором класее есть переменная. И ее надо использовать в первом классе. Как?

Голосование за лучший ответ

создать экземпляр второго класса и через точку получить доступ к нужной переменной, но переменная должна иметь идентификатор доступа public, если будет private, то можно получить ее если использовать свойство или метод с идентификатором доступа public, который возвращает переменную с ид. доступа private. пример
class class1
<
private int i=1;
public GetFkinI()
<
return i;
>
>
class class2
<
private void SomeMethod()
<
class1 c1 = new class1;
int i = c1.GetFkinI();
>
>

Используйте Свойства.

IsMythBulletУченик (234) 10 лет назад

http://img.uz/d/2013/10/5254edfa13a5c.jpg — вот пример

IsMythBullet Ученик (234) class Class1 < private int var1 = 1; public int PropVar1 < get < return var1; >set < var1 = value; >> > class Program < static void Main() < Class1 myClass = new Class1(); Console.WriteLine(myClass.PropVar1); //Вернется значение переменной var1 то есть 1. myClass.PropVar1 = 5; // через свойство PropVar1 установили значение переменной var1 5 Console.WriteLine(myClass.PropVar1); // как можно было догадаться вернется значение 5 >>

Как использовать переменную из другого класса java

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

Если переменная объявлена private , то необходимо вызвать геттер этой переменной.

class Friend  public String name; private String mail; public Friend(String name, String mail)  this.name = name; this.mail = mail; > public String getMail()  return mail; > > public class App  public static void main(String[] args)  Friend friend = new Friend("Ivan", "Ivan@mail.ru"); System.out.println(friend.name); // => Ivan System.out.println(friend.getMail()); // => Ivan@mail.ru > > 

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

Ошибка: CS1061 ‘GameObject» не содержит определения для «HealthWall» и не удалось найти метод расширения «HealthWall», принимающий тип «GameObject» в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)

  • Вопрос задан более трёх лет назад
  • 1252 просмотра

Комментировать
Решения вопроса 1

MrMureno

Denis Gaydak @MrMureno Куратор тега Unity
VR for all

у вас так и не понятно какую переменную из какого скрипта вы хотите вызвать.

и второй кусок кода — не класс, а просто пару строчек

но в общем то случае..если вам нужна глобальная переменная сделайте

public static float HealthWall = 100;
тогда сможете обращаться к ней GameController.HealthWall из любого скрипта

если же хочется не статичными переменными..то или читайте про синглтон (может вам под архитектуру подойдет)
или просто банально ищите через Find или FindObjectOfType — объект с нужным скриптом (если они у вас в сцене)

пока вообще не понятно что куда вы хотите «дернуть» и зачем..отсюда вытекает что толком и не понятно — что вам подсказать)

Ответ написан более трёх лет назад

alon_mix

Alon Mix @alon_mix Автор вопроса

Дак просто во втором скрипте и ничего нет.
Вот скрипт куда мы вызываем. Как мне обьяснили, но способ нехрена не идет. Сейчас ваш попробую.
public class II : MonoBehaviour public GameObject GameController;
GameObject go = GameObject.Find(«GameController»);
GameController gameController = go.GetComponent();
float courrentSpeed = GameController.HealthWall;

MrMureno

Denis Gaydak @MrMureno Куратор тега Unity

все правильно вам объяснили..и должно все отлично работать, разве что в конце
float courrentSpeed = gameController.HealthWall;
от найденного компонента (класса) переменную берем

то что вы указали — должно было выдавать ошибку при компиляции вообще то..
плюс учтите что
GameObject go = GameObject.Find(«GameController»); найдет только в случае точного совпадения имени и если объект активен (не отключен в иерархии сцены)

alon_mix

Alon Mix @alon_mix Автор вопроса

Denis Gaydak, Именно так. У меня скрипт с обьектом называются GameController.Может проблема в этом? И они лежат на сцене. Только мне ошибку компиляции не пишет, только при запуске сцены о том, что нет ссылки на обьект и выводит как раз такие строку с float courrentSpeed = gameController.HealthWall;

float courrentSpeed = gameController.HealthWall;
от найденного компонента (класса) переменную берем

Так и делаю и не понимаю что не так, пишет про ошибку выше сказанную.

MrMureno

Denis Gaydak @MrMureno Куратор тега Unity

не нашло такого скрипта на объекте..возможно у вас есть еще один объект с таким названием в сцене, и нашло GameObject не тот..
вам бы глянуть что оно нашло в
GameObject go = GameObject.Find(«GameController»);
это ж публичное поле..так что посмотреть на что ссылается — public GameObject GameController; проблем быть не должно не каких..

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

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

У меня есть множество классов (Страны) с одинаковыми названиями переменных. И есть другой класс который выводит информацию об этих классах. Сейчас пользуюсь таким методом: При вызове инфо класса страна передает ему свое имя через строку а в инфо классе уже делаю.

void Info(string Country) < if(Country == "Italy")< Text.text = Italy.NameOfVariable; >else if(Country == "Russia") < Text.text = Russia.NameOfVariable; >>

Но так как классов много будет очень много лишнего кода, скажите как можно использовать универсальный метод чтобы брать переменную, если это возможно, может быть и не через строку.

  • Вопрос задан более трёх лет назад
  • 2714 просмотров

Комментировать
Решения вопроса 1

MrMureno

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 вместо класса. и про наследование можно поговорить если будет что то уникальное для каких-то стран.
но вам еще видимо рано такое..

но в общем то, если сильно все упростить, вы просто не использовали ООП — создав на каждую страну свой собственный класс.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *