Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
1

Создание "общего" экземпляра для определенных классов

07.05.2018, 07:20. Показов 1312. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу, Помогите мне!

Создается игрок, на нём есть скрипт который хранит ДАННЫЕ(ник, id, лвл, хп, дамаг и тд), и ещё на нем есть несколько скриптов(вывод данные в UI + вычисление выносливости и тд) которые берут ДАННЫЕ на этом игроке.
Так вот...
На сцене будут много игроков.. Как мне сделать, чтобы, ДАННЫЕ игрока -> были глобальными?

Сперва я проТупил и подумал про экземпляры.
Но ДАННЫЕ во всех скриптах были разные, и не меняли в самих ДАННЫХ.


Пытался делать через статик...
При создании игрока, его ДАННЫЕ становятся статичными, НО у другого игрока скрипты(которые должны брать свои ДАННЫЕ) берут ДАННЫЕ у ПОСЛЕДНЕГО создавшегося игрока... Как это исправить?

ХЭЛПАНИТЕ
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2018, 07:20
Ответы с готовыми решениями:

Создание классов для определенных задач
Здравствуйте. При реализации небольшой справочной системы, состоящей из Студентов и Групп, по...

Создание экземпляра классов и наследование
Только начал изучать ООП в питоне. Ниже код + выдаваемая ошибка. что я делаю не так? Понимаю, что,...

Создание нового экземпляра дочернего класса из экземпляра базового
Всем привет! Извиняюсь, если вопрос глупый, но что-то не смог найти конкретный ответ на него... ...

Составить программу для расчета общего числа учеников в параллели 1, 2, 3, 4 классов
В двумерном массиве хранится информация о количестве учеников в каждом классе каждой параллели...

7
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
07.05.2018, 09:27 2
Цитата Сообщение от Staz Lincord Посмотреть сообщение
На сцене будут много игроков..
может пусть они все берут у другого статичного общего класса данные?
1
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
07.05.2018, 09:32  [ТС] 3
Цитата Сообщение от f3hler Посмотреть сообщение
может пусть они все берут у другого статичного общего класса данные?
Чё? Типа, что бы у всех были одинаковые данные? У всех хп/лвл/урон будут одинаков... Это же тупо. Нужно что бы игрок сам прокачивался и имел свою статистику.
0
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
07.05.2018, 10:11 4
Staz Lincord, так что нужно-то?
1
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
07.05.2018, 10:20 5
Лучший ответ Сообщение было отмечено Staz Lincord как решение

Решение

Цитата Сообщение от Staz Lincord Посмотреть сообщение
Чё? Типа, что бы у всех были одинаковые данные? У всех хп/лвл/урон будут одинаков...
я вам предложил способ, а что именно вы будете брать общее, а что свое, это уже решать вам.

какой вопрос- таков и ответ.
расскажите что вам нужно, но более детально (как есть и что не нравится), и вам дадут ответ на вопрос который вас интересует.
1
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
07.05.2018, 17:27  [ТС] 6
При создании игрока, я делаю его ДАННЫЕ(скрипт) статичными, НО у другого игрока - его скрипты берут ДАННЫЕ у ПОСЛЕДНЕГО создавшегося игрока... а нужно чтобы он брал СВОИ ДАННЫЕ.

Добавлено через 1 час 21 минуту
Я делаю ДАННЫЕ(скрипт. стоит на игроке) статичными вот так:
C#
1
2
3
4
5
6
7
8
9
public class DataPlayer : NetworkBehaviour {
    public static DataPlayer instance;
 
    //ТУТ ВСЕ НУЖНЫЕ ПЕРЕМЕННЫЕ: ХП, ЛВЛ, УРОН И ТД
 
    void Start() {
        instance = this;
    }
}
В других скриптах(они стоят на том же игроке) ссылаюсь к переменным ДАННЫХ так:
C#
1
    DataPlayer.instance.ПЕРЕМЕННЫЕ;
Ссылается нормально, но если будут подсоединяться игроки, то у ВСЕХ СКРИПТЫ будут ссылаться к последнему созданному статику... Что в таком случае применить?

Добавлено через 5 часов 2 минуты
крч) эт я тупорылый Решение было очень простым)) а я уже пошел в сторону статичных экземпляров и универсальных шаблонов синглтонов Извиняюсь, Тема закрыта ...
0
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
08.05.2018, 09:50 7
Лучший ответ Сообщение было отмечено Staz Lincord как решение

Решение

Staz Lincord, ну так расскажите что вы там придумали) многим новичкам будет интересно.

а вот про статик классы вы почитайте...
Троэлсона например, там неплохо описано.
1
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
08.05.2018, 12:55  [ТС] 8
f3hler, вы правы.

Но тут и правду нет ничего магического, потому что я идиот, думал нельзя взять/изменить переменные просто так.

Просто объявляете переменную типом нужного класса и в инспекторе перетаскиваем нужный скрипт:
C#
1
2
3
4
5
6
7
8
9
private DataPlayer data; // Теперь у нас все нужные переменные..... 
 
void Start() {
 idiot();
}
 
void idiot() {
 data.hp -= 10f; // Я думал переменные будут локальны для этого скрипта, и не будут изменяться в конечном скрипте....
}
Ну конечно же в DataPlayer нужно переменные сделать SyncVar и изменять их через Command и всё будет чики-пуки(синхронизировано у всех)
0
08.05.2018, 12:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2018, 12:55
Помогаю со студенческими работами здесь

Ошибка общего члена экземпляра класса в массиве
Всем привет. Опять пытаюсь сделать исcкуственую жизнь. вот класс бота: Public Class Bot Dim...

Создание экземпляра для наследника абстрактного класса
Есть абстрактный базовый класс: class Base { public: int variable; virtual void...

Создание экземпляра TStrings для рекурсивной процедуры
Собственно сама процедура, которую предполагается использовать рекурсивно, но..( не работают методы...

Создание одного экземпляра формы для нескольких форм
Всем привет. Народ подскажите, если у меня есть диалоговое окно(Form2) которое должно вызываться...

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

Создание условия: при определенных значениях переменной выполнения определенных арифметических действий
Имеется переменная w2 при значении 1 -происходит вычитание 2 - сложение 3 - умножение 4 - деление...

Создание итератора для дерева общего вида
Возникла такая проблема: надо сделать итератор для дерева общего вида. Я не знаю, как его лучше...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru