向 .NET 应用程序添加脚本功能

2023-12-02

我有一个用 C# 编写的小游戏。它使用数据库作为后端。它是 A集换式卡牌游戏,我想以脚本的形式实现卡片的功能。

我的意思是我本质上有一个界面,ICard,卡片类实现了(public class Card056: ICard)并且其中包含一个由游戏调用的函数。

现在,为了使该东西可维护/可修改,我希望将每张卡的类作为数据库中的源代码,并在第一次使用时对其进行编译。因此,当我必须添加/更改卡时,我只需将其添加到数据库并告诉我的应用程序刷新,而不需要任何程序集部署(特别是因为我们将讨论每张卡 1 个程序集,这意味着数百个程序集) 。

那可能吗?从源文件注册一个类,然后实例化它,等等。

ICard Cards[current] = new MyGame.CardLibrary.Card056();
Cards[current].OnEnterPlay(ref currentGameState);

该语言是 C#,但如果可以用任何 .NET 语言编写脚本,那就额外奖励了。


Oleg Shilo 的 C# 脚本解决方案(位于 The Code Project)确实是在应用程序中提供脚本功能的一个很好的介绍。

另一种方法是考虑专门为脚本构建的语言,例如IronRuby, 铁蟒, or Lua.

IronPython 和 IronRuby 现已上市。

有关嵌入 IronPython 的指南,请阅读如何通过 10 个简单步骤将 IronPython 脚本支持嵌入到现有应用程序中.

Lua是游戏中常用的脚本语言。 CodePlex 有一个用于 .NET 的 Lua 编译器——http://www.codeplex.com/Nua

如果您想了解如何在 .NET 中构建编译器,那么该代码库是一本很好的读物。

完全不同的角度就是尝试电源外壳。有许多将 PowerShell 嵌入到应用程序中的示例 - 以下是关于该主题的完整项目:Powershell隧道

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 .NET 应用程序添加脚本功能 的相关文章

随机推荐

  • 循环遍历具有冒号分隔字符串的文件

    我有一个如下所示的文件 work week day england work1 week day sweden work2 week day 每次我循环遍历列表时 我都想将每个字符串作为我可以使用的变量 例如 如果我想知道我在哪个位置工作
  • C++ 指针算术怪异

    我发现了我的错误 几个小时后 并将其隔离在以下程序中 问题在于使用指向结构的指针时计算 pst2 变量值的方式 当使用指向 char 的指针时 一切正常 为什么是这样 使用gcc g 版本 Debian 4 4 5 8 4 4 5 对于那些
  • clang-format 使用指示符删除数组定义中的新行

    如果可能的话 我喜欢用指示符定义数组值 enum Mode NONE SPLIT FILES SINGLE FILE INVALID const std string ModeName NONE NONE SPLIT FILES SPLIT
  • 确定 HTML5 数据库内存使用情况

    我正在向我的 Google Chrome 扩展添加 sqlite 支持 以存储历史数据 创建数据库时 需要设置最大大小 我使用了5MB 正如许多示例中建议的那样 我想知道我实际使用了多少内存 例如添加 1000 条记录后 以了解何时达到 5
  • ASP.NET MVC 控制器生命周期

    据我了解 在每个 Web 请求期间不会调用控制器的构造函数 假设这是真的 那么控制器的生命周期是多少 是在应用程序启动时 构造 的 然后通过每个 Web 请求注入的请求上下文进行缓存和调用吗 需要明确的是 我并不是在问如何模拟构造函数行为
  • 使用 Symbolserver 调试 ASP.NET MVC4 的夜间构建

    我使用此描述为我的项目获取 ASP NET MVC 的夜间构建 http blogs msdn com b henrikn archive 2012 06 01 using nightly asp net web stack nuget p
  • Angular2:进度/加载覆盖指令

    我正在尝试在 Angular2 中创建一个加载指示器 覆盖层 我可以将其添加到任何容器 div 中 当动态布尔属性如isLoading更改时 它应该使 div 变灰并显示旋转指示器 并在属性更改回来后再次消失 我得到了一个可行的解决方案 C
  • python requests.get() 返回一个空字符串

    当我运行下面的代码时 它返回一个空字符串 url http www allflicks net wp content themes responsive processing processing us php draw 5 columns
  • 使用 pandoc 将 markdown 转换为 pdf 时如何强制将图像转换为文本

    我制造了一个GitHub 维基百科 软件包手册 我想将其转换为精美的 pdf 手册 然而 我在处理图表时遇到了一些麻烦 其中许多图表都放在接下来的一页中 远远落后于文本中应有的位置 这使得文档非常难以阅读 为此 我基本上遵循了建议here
  • 检查输入是否为整数

    为了学习 C 我正在翻译我用 Python 编写的程序 我写了这个 n 0 while n lt 2 try n int raw input Please insert an integer bigger than 1 except Val
  • Java:计算三角形的面积

    import java lang Math import java awt public class Triangle implements Shape java awt Point a java awt Point b java awt
  • 如何在邮件服务器上的 HTML 电子邮件中嵌入图像?

    如何在 HTML 中嵌入图像 以便图像与 html 文件内容一起传递 而不需要单独访问服务器来检索图像 我们需要它在签名离开邮件服务器之前将公司徽标嵌入到签名中 我们不想使用雷鸟或 Outlook 等客户端解决方案来添加签名 thanks
  • Google 身份服务 - 保持登录状态

    我正在从 Google 登录平台库迁移到新的 Google 身份服务使用一键登录 但当用户刷新或转到其他页面时 网站会自动注销用户 这是加载一键登录的每个页面上都存在的代码 div div 删除它只会让用户退出 无法重新登录 有一个cook
  • Google App Engine - 如何扩展 db.IntegerProperty

    当我在整数和字符串之间交换很多时 我希望扩展 db IntegerProperty 以下是一些代码片段和我在应用程序启动器日志中收到的错误消息 有什么指点吗 谢谢 大卫 class FSIdProperty db IntegerProper
  • 仅 CSS 动画绘制具有边框半径和透明背景的圆

    我正在尝试绘制一个具有边框半径的圆 并为其设置动画 我可以做到这一点 但我不能做的是覆盖元素并将圆圈背景设置为透明 而不取消隐藏蒙版 我无法使其在元素上透明 因为需要应用遮罩来隐藏圆圈的左半部分 因为它旋转以模仿绘制效果 HTML div
  • Android Studio 构建失败,并显示“在根项目 'MyProject' 中未找到任务 ''”。

    在更换笔记本电脑并更新到 Android Studio 版本 0 8 2 后尝试构建项目时 我收到此错误 失败 构建失败并出现异常 什么地方出了错 在根项目 MyProject 中找不到任务 尝试 运行 gradle 任务以获取可用任务的列
  • 远程网络驱动程序上的 Chrome(通过网格)无法启动

    我在使用 Grid 上的远程 Webdriver 功能 1 个 Linux 集线器和 1 个带有 Firefox 和 Chrome 的 Linux 节点 启动 Chrome 的 Cucumber 测试时遇到问题 Firefox 测试进行得很
  • 使用 EaselJS 在 html5 画布中绘制一条线

    我对 Easel 和 HTML5 本身非常陌生 我正在尝试使用 EaselJS 在画布上画一条线 X 坐标固定为 100 Y 坐标从数组列表中获取 我编写的代码如下 有人可以让我知道我哪里出错了吗 function myFunction a
  • Android Wear-如何捕获触摸事件

    我想捕获Android Wear上的触摸事件 我使用的是Samsung Gear Live 来绘制触摸轨迹 我尝试捕获 onTouch 事件和 onGenericMotionEvent 事件 如以下代码所示 但是当我在屏幕上滑动时 该事件仅
  • 向 .NET 应用程序添加脚本功能

    我有一个用 C 编写的小游戏 它使用数据库作为后端 它是 A集换式卡牌游戏 我想以脚本的形式实现卡片的功能 我的意思是我本质上有一个界面 ICard 卡片类实现了 public class Card056 ICard 并且其中包含一个由游戏