Сценарии в C # - Портативная библиотека для XNA и 360? - PullRequest
2 голосов
/ 27 июня 2010

Мне просто интересно, возможно ли это вообще; как делать несложные сценарии в C #. В основном, скажем, у меня есть структура как таковая:

Structure
   int a
   int b
   int c

   Function ParseValue(pString as String)

         try
              return interpret(pString)
         catch
             return 0
         end try

   End Function

ParseValue будет в том месте, где лежит мой вопрос, в частности, 'интерпретировать'. «Интерпретировать» - это просто обобщенный заполнитель для того кода / реализации, который я ищу.

Допустим, я передаю значение для pString как 'a + b + c'. Таким образом, код будет интерпретировать строку как «вернуть значение сложения a + b + c» вместе. И если я не могу этого сделать, «вернуть 0». Хорошим примером необходимости возврата 0 будет «(a + b) / c» и значение c = 0 (не может делиться на ноль).

Возможно ли это сделать? Я давно знаю, что смог использовать Microsoft Scripting Control для достижения аналогичной функциональности в VB6, но да. Это 12 лет назад и не совместимо с C # / XNA / 360. Я думаю: P

РЕДАКТИРОВАТЬ: Язык, который может быть интерпретирован, не имеет значения. Если я могу использовать VB.Net или C # и интерпретировать в нем VBSCript или JScript, я рад этому.

Ответы [ 2 ]

1 голос
/ 27 июня 2010

Это самое первое интересное использование компилятора Mono CSharp для достижения некоторых функций сценариев,

http://gent.softcatala.org/jmas/bloc/pivot/entry.php?id=449&w=jordis_english_bloc

Вы можете увидеть, можно ли использовать трюк в XNA.

0 голосов
/ 08 июля 2010

Мне неизвестна конкретная библиотека сценариев, доступная для .Net Compact Framework (т. Е. Та, которая будет работать на 360). Вы можете найти один, я просто не смотрел. Я видел интерпретатор Lua, написанный на C #, но я не уверен, что он работает с Compact Framework. (И я не помню, где я его вообще нашел.)

Однако вы можете динамически загружать предварительно скомпилированные сборки на 360 (в Windows вы также можете динамически скомпилировать их, но 360 может только загружать их), что позволит вам использовать любые .Net язык как ваш язык сценариев. Проблема в том, что именно вы получаете, имея язык сценариев? Вы можете изменить сценарии, не перезапуская игру, но вам все равно придется пройти через процесс компиляции, и отладка становится намного более сложной.

Учитывая высокую скорость компиляции C #, я думаю, что вам, вероятно, лучше без языка сценариев для вашей игры.

...