Подскажите пожалуйста, возможно ли в Unity использовать не чистый c# , а совместить c# и c++(и если можно как такое реализовать)?
То есть каркас игры написать на c#, а все остальное - на c++.
И вообще как пишутся unity игры(имеется ввиду большие проекты): на чистом с# , или есть способы совместить несколько языков, а на c# написать только каркас ?
Если такая возможность есть, то часто ли применяется?
И главное : стоит ли овчинка выделки, или лучше просто использовать Unreal Engine для c++?
И какой движок по вашему лучше?
( В интернете информация очень хаотичная , и я скорее запуталась в этом вопросе)
P.S. Также подскажите пожалуйста можно ли вообще в одном проекте совместить
c++ и c#, нужно ли для этого что то специальное(или подключить файл и вызвать c# функцию/метод в c++ коде)? Как такое можно сделать?
P.P.S. Использовать только c# не вариант, с ним почти не знакома.
Если кто-то знает - подскажите пожалуйста литературу по этому вопросу)
Василий Банников, Просто насколько я понимаю, Unity не поддерживает c++, а поддерживает только c#, и я подумала что можно провернуть такой трюк чтобы использовать c++ с Unity)
Василий Банников, Извините что задаю глупый вопрос, просто про Вашей ссылке не совсем понятно , вроде как можно использовать с++, но с какими устовиями не совсем понятно
Теоретически - это вполне возможно - подключаете обычные библиотеки (dll и прочие) и работаете с ними. Но надо понимать что тогда вам вручную надо поддерживать их под все платформы. Можно и на другие более низкие уровни вмешиваться, в общем - это возможно.
Если вас так пугает c# (что между прочим зря - хороший удобный язык) - то стоит посмотреть конечно в сторону других движков. Но не забывайте о таргет платформах ;-)
Спасибо большое за ответ)
Просто почему-то c++ больше нравиться из за того что очень высокопроизводительный, и используется для большого количества задач)
Txao ,Подскажите пожалуйста , какой движок используется при создании крупных проектов( свой или какой то из существующих)?
И какой движок лучше изучать(для с++)?
annas_08, если бюджет позволяет, и если в проекте используется то, чего нельзя реализовать, например, в UE (хотя такое вряд ли), то да, компания может написать свой движок. А так в UE фактически есть всё, и поэтому большинство компаний смотрят на такой подход, нежели свой движок создать (текущий проект GSC Game World, к примеру).
Для С++ однозначно UE.
Василий Банников, c# не кроссплатформенный и насколько я знаю не подходит для микроконтроллеров, и медленнее c++ поэтому не подойдёт там где нужно максимальное быстродействие
У меня нет, но умение писать максимально быстрый код пригодиться)
К тому же я ж еще учу только, поэтому прям таких задач быть и не может на данный момент.
Просто есть сферы в которых максимальное быстродействие критично важно.
Для каких задач c# быстрее?
На счет МК на c# не знала, благодарю за полезную информацию.
c# чисто обектно ориентирован , и более высокоуровневый ,а c++ есть и
низкоуровневые инструменты ( после введения нового стандарта они стали не хуже , а может еще и лучше чем в С ) что является крайне удобным
У меня нет, но умение писать максимально быстрый код пригодиться)
Максимально быстрый код - это в основном выбор наиболее подходящего алгоритма.
Для каких задач c# быстрее?
Примерно всех, где не жалко ОЗУ(не стоит задача уместиться в 64К), и разработчик не оптимизирует код до микроопераций.
c# чисто обектно ориентирован , и более высокоуровневый
Для отдельных случаев есть структуры, сырые указатели, Span, и интринсики.
Или в случае Unity - Burst
А ещё в C++ нет менеджера пакетов, сборщика мусора, Thread Pool'а с тасками, Expression, LINQ, JIT, нормального фреймворка для веба (и фронта и бэка), итд
Василий Банников, В c# хоть и есть кросплатформенность но все равно с этим сложности,
в c++ есть целая библиотека для битовых операций(не уверена что в c# есть),
веб фреймворки есть, span добавили в c++20, так же есть огромная Стандартная Библиотека с кучей полезных функций, шаблонов, флагов ...
В с++ структуры тоже есть , также есть пользовательские перечисления enum.
Добавили новый оператор <=> (не думаю что в c# такой есть).
Также существуют специальные умные указатели
Василий Банников, Оператор <=> нужен для сравнения чего-то с пользовательским типом данных(класы , структуры,enum)
c# изначально был под Винду, а уже потом начали добавлять кросплатформенность, от этого и сложности(с++ полностью кроссплатформен).
Про удобность веб фреймворков не знаю, еще не пользовалась
annas_08, C# обычно компилируется не в машинный код, а в CIL, и CIL должен выполняться в какой-либо CLR.
Вот mono, .NET Core, .NET Framework и .NET 5+ - это реализации CLR.
Сейчас самая актуальная - это .NET 5.
В .NET 6 также можно будет собирать C# сразу в машинный код и не устанавливать на целевую машину рантайм, и не тащить его с собой.