Mariya Mariya

Dreaman, Спасибо! =)

Dreaman Dreaman

Mariya, законченный вариант реально классно выглядит! Молодец :)

Mariya Mariya

Всем привет!
Сегодня хочу показать законченный вариант домика Сырны.

alexprey alexprey

StarPlosion: Битва с пиратами за планету

Wings' might Wings' might

Всем привет)
Добавил на этой неделе начальное окно, новую валюту и достижения:

alexprey alexprey

shadeborn, может быть они нашли способ как обойти полноценный запуск этих сервисов при запуске игры? Если так, то почему бы и не использовать единый клиент?) В любом случае, чем дальше все идет, там это все больше становится похоже на эту шутку

...
shadeborn shadeborn

Это всё круто, но...зачем? Ок есть Стим. Хорошо, теперь еще и ЕГС есть. Благо, комп не зашкварен Оригином...но у людей и он стоит. И для работы игр внутри этих сервисов нужны, собсно, эти сервисы. Так поверх этих сервисов нужно накатить еще один...

Devion Devion

согласен, есть кейсы которые без них вообще не делаются, не знать или избегать их определенно неправильно

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

alexprey alexprey

Devion, только рад за дополнение, Спасибо)

хм, а вот это интересно, не пробовал никогда такой кейс.

Devion Devion

лёш, ты же не против если я дополню? )

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

Mariya Mariya

Всем привет!
Начали работу над мебелью в домик Сырны, и первым сделали чайный столик с чайным сервизом. А так же продолжаем работу над анимациями.

Wings' might Wings' might

Всем привет)
За неделю в игру было добавлено меню настроек, переделана старая локация, добавлены новые враги и повышена производительности

alexprey alexprey

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

Dreaman Dreaman

Всем привет!
Для проекта "Mental State" разработано новое устройство, которое уже полностью функционирует внутри игрового мира. Оно носит название "Репульсивер". Совместно с очередными большими воротами это устройство образует новую головоломку...

...
Mariya Mariya

Всем привет!
На этой неделе мы научили Сырну летать!

Tartal Tartal

alexprey, кастомизации - создание внешности персонажа? Я всегда любил это, но не думаю, что это будет к месту в мясном шутере)
EfimovMax, да, есть немного)

Tartal Tartal

Jusper, точно не помню, уже как полгода точно) Я вроде в Дискорде немного обсуждал эту тему. Пока немножко попробовал движок - мне очень нравится. Ну, в конце концов, он идеально подходит под жанры, с которыми я хочу работать...

alexprey alexprey

Первая тема крутая очень!

Логотип проекта Unity

Сериализация функтора

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

Все сериализаторы скопилированы в библиотеку. Помимо сериализации функтора так же доступна сериализация и некоторых других сущностей.

Сериализация реализована через наследие от ScriptableObject
Это значит, что сборка мусора на этих объектах не работает, их нужно удалять вручную командой Object.DestroyImmediate()

Список всех основных сериализаторов данной библиотеки:

Сериализуется через класс SerializeConstructorInfo.
Для создания юзается метод класса Serialize:

SerializeConstructorInfo CreateConstructorInfo(ConstructorInfo value)

Сериализуется через класс SerializeMethodInfo.
Для создания юзается метод класса Serialize:

SerializeMethodInfo CreateMethodInfo(MethodInfovalue)

Сериализуется через класс SerializeFieldInfo.
Для создания юзается метод класса Serialize:

SerializeFieldInfo CreateFieldInfo(FieldInfo value)

Сериализуется через класс SerializeMemberInfo.
Для создания юзается метод класса Serialize:

SerializeConstructorInfo CreateMemberInfo(MemberInfo value)

Сериализуется через класс SerializeMemberAssignment.
Для создания юзается метод класса Serialize:

SerializeMemberAssignment CreateMember_Assignment(MemberAssignment value)

Сериализуется через класс SerializeMemberListBinding.
Для создания юзается метод класса Serialize:

SerializeMemberListBinding CreateMember_ListBinding(MemberListBinding value)

Сериализуется через класс SerializeMemberMemberBinding.
Для создания юзается метод класса Serialize:

SerializeMemberMemberBinding CreateMember_MemberBinding(MemberMemberBinding value)

Сериализуется через класс SerializeMemberBinding.
Для создания юзается метод класса Serialize:

SerializeMemberBinding CreateMemberBinding(MemberBinding value)

Сериализуется через класс SerializeElementInit.
Для создания юзается метод класса Serialize:

SerializeElementInit CreateElementInit(ElementInit value)

Сериализуется через класс SerializeType.
Для создания юзается метод класса Serialize:

SerializeType CreateType(Type value)

Сериализуется через класс SerializeEnum.
Для создания юзается метод класса Serialize:

SerializeEnum CreateEnum(Enum value)

Сериализуется через класс SerializeValue.
Для создания юзается метод класса Serialize:

SerializeValue CreateValue(object value)

Сериализуется через класс SerializeExpression.
Для создания юзается метод класса Serialize:

SerializeExpression CreateExpression(Expression value)

Дополнительные сериализаторы, связанные с выражениями:
Все эти сериализаторы можно использовать через класс Serialize.Expressions
* SerializeExpressionBinary Binary(BinaryExpression value)
* SerializeExpressionMember Member(MemberExpression value)
* SerializeExpressionUnary Unary(UnaryExpression value)
* SerializeExpressionConditional Conditional(ConditionalExpression value)
* SerializeExpressionConstant Constant(ConstantExpression value)
* SerializeExpressionInvocation Invocation(InvocationExpression value)
* SerializeExpressionLambda Lambda(LambdaExpression value)
* SerializeExpressionListInit ListInit(ListInitExpression value)
* SerializeExpressionMemberInit MemberInit(MemberInitExpression value)
* SerializeExpressionMethodCall MethodCall(MethodCallExpression value)
* SerializeExpressionNew New(NewExpression value)
* SerializeExpressionNewArrayInit NewArrayInit(NewArrayExpression value)
* SerializeExpressionNewArrayBounds NewArrayBounds(NewArrayExpression value)
* SerializeExpressionParameter Parameter(ParameterExpression value)
* SerializeExpressionTypeIs TypeIs(TypeBinaryExpression value)

Пример применения

public ConstructorInfo exampleOfRealData; //Предполагается, что поле не пусто
public SerializeConstructorInfo data;
public void Method() 
{
	data = Serialize.CreateConstructorInfo(exampleOfRealData);
	//Теперь data.value всегда будет возвращать этот конструктор
}

С остальными классами аналогично.

С выражениями чуток иначе. Все выражения юзаются через класс Expression<>. Например.

public SerializeExpression expression;
public void Method() 
{
	Expession<Func<int>> tempExpression = () => 10;
	expression = Serialize.CreateExpression(tempExpression);
}

Не были добавлены блочные операторы, покуда класс Expression<> не умеет с ними работать. Потому писать сериализаторы под всякие try-catch{} и if {} я не стал - все равно компилятор такие вещи не пропускает.
Если найду способ это обойти офк добавлю и опишу как с этим работать



Я, конечно, лезу в то, в чем не разбираюсь, но разве в шарпе роль функторов не выполняют делегаты?

lentinant, лямбда/функторы это фактически и есть делегаты в их скомпилированном виде (насколько мне помнится разбор на IL). Иногда лямбду применять удобнее, чем делегат в чистом виде (например когда в метод нужно послать какое-то вычисление, вовсе не обязательно плодить метод, можно и вписать лямбду). А в нескомпилированном виде это простор для динамик-кода
Эльрат, фиг с этой главной. Мне лень, да и очередной срач мне не нужен. Буду тихонько делать свое дело.