Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 24.02.2020
Сообщений: 46
.NET 3.x

Реализация возможностей класса MonoBehaviour из Unity

06.03.2021, 13:47. Показов 2480. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Хочу заранее сказать, что раздел я выбрал тот, по крайней мере, речь здесь не столько о Unity, сколько о возможностях C#.

Так вот: я делаю свой движок, наподобие Unity. И там есть класс, который по задумке должен работать как MonoBehaviour из Unity. И речь не о Update() и прочих методах (это нетрудно сделать), а автоматической замене копии объекта на ссылку на него.
Если кто не знает, в Unity, если присвоить одному объекту типа Monobehaviour значение другого, это будет буквально один и тот же объект, то есть, изменяя свойства одного, так же меняются свойства и другого.
Сначала хотел перегрузить оператор =, но оказалось, что нельзя. Была еще мысль, что в Unity подобная замена происходит в момент компиляции скрипта, но всё же хочется верить, что оно работает иначе, потому что сейчас нет возможности (и опыта) сделать свой компилятор.
Можете подсказать, есть ли в C# какие-либо инструменты для реализации подобного?

Добавлено через 11 минут
UPD: Я не хочу делать компилятор еще и потому, что мне сейчас надо сделать несколько модулей (рендеринг, физика и т.д.), и без такого присваивания мне придется везде использовать ссылки. В принципе, я могу научиться делать компиляторы, но тогда я бы хотел скомпилировать dll где уже будет единственный тип, для которого такое присваивание автоматическое. Но я не уверен, что это возможно, и будет ли это нормальным решением.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2021, 13:47
Ответы с готовыми решениями:

C# Socket в Unity (ClientSocket : MonoBehaviour) иногда не принимает пакеты от сервера (теряет их)
Всем привет! У меня есть C# AsyncServer - он отсылает пакеты клиенту Unity. Асинхронный Socket на Unity (статический singleton)...

Демонстрация возможностей созданного класса в методе Main()
Здравствуйте уважаемые программисты) Мне нужна ваша помощь. Большую часть я уже сделала, осталось чуть чуть. Вот что мне осталось...

Написать программу, демонстрирующую выполнение всех возможностей класса
Описать класс для работы с одномерным массивом целых чисел (вектором). НеоОписать класс для работы с одномерным массивом целых чисел...

3
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18304 / 14228 / 5368
Регистрация: 17.03.2014
Сообщений: 28,901
Записей в блоге: 1
06.03.2021, 16:30
Лучший ответ Сообщение было отмечено Fifth как решение

Решение

Цитата Сообщение от Fifth Посмотреть сообщение
сли кто не знает, в Unity, если присвоить одному объекту типа Monobehaviour значение другого, это будет буквально один и тот же объект, то есть, изменяя свойства одного, так же меняются свойства и другого.
Ссылочные типы именно так и работают. Объявляете класс(ы) и пользуетесь этим поведением "на халяву". Ничего дополнительно делать не нужно.
1
0 / 0 / 0
Регистрация: 24.02.2020
Сообщений: 46
07.03.2021, 12:42  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Ссылочные типы именно так и работают. Объявляете класс(ы) и пользуетесь этим поведением "на халяву". Ничего дополнительно делать не нужно.
Хм, а ведь правда. Хотя, раньше я писал скрипты на Unity, и подобного поведения у стандартных классов не замечал.

А если я использую класс, и мне не надо, чтобы он работал как ссылочный тип, то что можно сделать? Или только через клонирование?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
07.03.2021, 12:53
Цитата Сообщение от Fifth Посмотреть сообщение
А если я использую класс, и мне не надо, чтобы он работал как ссылочный тип, то что можно сделать?
Сделайте его иммутабельным или используйте вместо класса структуру.
Правда, структуры не поддерживают наследование.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.03.2021, 12:53
Помогаю со студенческими работами здесь

Unity реализация таблицы
Ребят, возник вопрос - как реализовать таблицу в юнити? Таблица лидеров - должно быть три поля: номер, логин и поинты. Супер необходимо,...

Реализация биллбоарда в unity
как сделать billboard plane силами c#?

Реализация платного контента на Unity 3D
Здравствуйте ! Unity 3d как сделать платности -- этот движок довольно широко используется для построения 3d игр -- как спрограммировать...

Реализация работы с классами, конструктор, методы класса и переменные класса
Всем привет, решил изучать Java. Нашел прикольное задание : Реализовать класс, представляющий собой строку фиксированной длины -...

Реализация класса на базе класса Stack с возможностью !индексирования!
Помогите пожалуйста!!! Нужно реализовать на базе класса stack другой класс с возможностью индексирования, а именно: Например 1 - й...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru