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

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

  • автор:

Получить значение переменной из другого класса

Author24 — интернет-сервис помощи студентам

Доброго времени суток, помогите пожалуйста разобраться.
Есть класс в котором хранится переменная, перед обращением в нее попадает значение. Как в другом классе использовать это значение?

Класс где хранится значение

1 2 3 4 5 6 7 8 9
public int height { get; private set; } public int width { get; private set; } public int depth { get; private set; } public int mirror { get; private set; } public int widthMirror { get; set; } public int wumberOfDoors { get; set; } public int heightDoor { get; set; } public int widthDoor { get; set; } public int numberOfDoors { get; set; }

Другой класс в котором нужно получить значение.

1 2 3 4 5 6 7 8 9 10
public void ChoiceSizeDoor() { cupboardSize.heightDoor = (int)cupboardSize.height - 60 - 6 - 4; cupboardSize.widthDoor = (int)(cupboardSize.widthDoor / cupboardSize.numberOfDoors) - 4 - 5; } public void ChoiceSizeMirror() { cupboardSize.HeigthMirror = cupboardSize.HeigthDoor - 1; cupboardSize.WidthMirror = cupboardSize.WidthDoor - 1; }

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

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

Всем доброго. Пытаюсь программировать на С#, но уперся уже несколько дней — не могу вызвать переменную из другого («а») из другого класса («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; >>

Пробовал гуглить, яндексить и т. д. — не помогло.

Как использовать переменную из другого класса 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 или ссылка на сборку)

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

Комментировать
Решения вопроса 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; проблем быть не должно не каких..

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

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

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