Я пишу систему частиц. (для игры и редактора частиц)
В этой системе есть модификаторы от 0 до n.
Они модифицируют частицы в системе частиц каждый кадр.
Например, у вас может быть предопределенный модификатор под названием «GravityModifier», который выполняет только каждую частицу в каждом кадре: «частицы.Велочность.Y + = 9.81» или что-то в этом роде.
Теперь я хочу, чтобы пользователь мог писать дополнительные модификаторы во время выполнения (в редакторе).
Я хотел бы иметь возможность просто использовать C # для этого.
А поскольку системы частиц записываются в файлы JSON, пользовательские сценарии модификаторов следует записывать в файл в виде исходного кода (возможно, в кодировке base64).
-
Мой вопрос:
Предположим, игра хочет загрузить такой системный файл частиц. Как мне скомпилировать пользовательские модификаторы в исполняемый код?
Еще одна очень важная вещь, на которую следует обратить внимание при ответе на этот вопрос: обратите внимание, что это будет система частиц для игры. Скомпилированный код будет вызываться более 3000 раз за каждый кадр. (в основном на скорости 60 кадров в секунду)
Поэтому очень важно, чтобы скомпилированный код не выполнялся намного дольше, чем другие игровые функции.
Было бы неплохо, чтобы скрипты-модификаторы были скомпилированы в делегаты в форме:
делегат void ModifyParticle (ref Particle p);
Возможно ли это? Если да, то как?