【发布时间】:2011-05-28 08:11:18
【问题描述】:
我目前正在使用 C#“动态”功能编写的游戏中实现脚本引擎。
系统的工作方式是当调用脚本时,它应该注册它所侦听的事件,然后将控制权返回给应用程序。然后,当触发脚本正在侦听的事件时,脚本应该执行。我真正想在脚本引擎中实现的一件事是让具有特定名称的方法自动绑定到事件。例如,onTurnStart() 监听器应该自动绑定到 turnStart 事件。
脚本主要需要执行现有方法并更改类中的变量值;像 player.takeDamage() 和 player.HP = somevalue 这样的东西。大多数脚本需要等待玩家回合开始和玩家回合结束后才能被卸载。
复杂的部分是这些脚本需要能够在不对游戏进行任何代码更改的情况下进行更改。 (抛开安全问题不谈)目前的计划是在游戏启动时自动下载所有脚本更改,以确保所有玩家都使用相同版本的脚本。
但是我有三个问题:
1) 如何注册和注销脚本事件监听器?
2) 动态代码可以监听事件吗?
3)(如何)我可以动态注册事件吗?
这是我第一次使用 C# 的动态功能,因此将不胜感激。
谢谢
——迈克尔
【问题讨论】:
标签: c# events scripting dynamic