在XNA和&amp ;;之间传递元数据的最佳方式WPF用于关卡编辑器

时间:2013-04-13 04:31:44

标签: c# wpf xna routed-events

我在XNA中有一个预先存在的游戏,我很遗憾地丢失了关卡编辑器代码。之前它曾作为一个单独的.exe运行,但我已完成修改游戏的工作,以便可以暂停在游戏中运行一个关卡编辑器。我想使用WPF实际进行级别编辑,因为它似乎非常适合任务,但我不知道在两个系统之间传递信息的最佳方式。

我的XNA游戏产生了一个WPF窗口,我已经在XNA游戏中注册了事件,当我点击WPF窗口上的一个按钮时,XNA游戏会收到ClickEvent并做出相应的响应。这非常适合放置除了位置(像雕像之类的东西)之外不需要初始化数据的对象,我只是直接在XNA中解释。但是,现在我的对象具有用户在WPF编辑器中定义的更多信息(例如,启动敌人健康状况),并且我不确定将信息路由到XNA的最佳方式。我特别想要记住,最终,我想要做到这一点,以便我可以点击游戏中的一个对象来“在线”编辑它(或者至少让它看起来像那样使用者关卡编辑)。基本上,当用户点击XNA中的对象时,我需要能够根据存储在XNA中的信息设置WPF控件值。

这是我到目前为止所想到的,但这些都不像我希望的那样直截了当,所以我不确定我是否会走正路。

  1. 覆盖RoutedEventArgs以包含我需要的额外元数据,这样当从WPF引发并由XNA拾取事件时,所有额外信息都已存在。
    • 这似乎是一个不错的方法,但是当我想要反过来时,它根本不能帮助我。
    • 另外,我可能误解了它是如何工作的,但似乎我需要在我的XNA游戏中添加一堆通用的EventHandler代码,这对于“雕像”案例并不是必需的。
  2. 重写Button类以附加我需要的额外元数据,然后通过发件人或RoutedEventArgs.OriginalSender访问它
    • 这似乎是一种比较简单的方法,但感觉有点强迫。这些信息并不属于Button的一部分。
    • 我不确定这如何将信息从XNA传回WPF。
  3. 通过sender.Parent或RoutedEventArgs.OriginalSender.Parent获取信息,这需要将其转换为适当的WPF UI元素。
    • 这看起来相对容易,但有点难看。它基本上意味着放置一堆常规C#样式属性,当ComboBoxes之类的东西有更改/选择事件时,它们会设置它们的值。
    • 这似乎比制作自定义按钮更容易,但我还没有花很多时间看它。
  4. 任何帮助/指示将不胜感激。我也很高兴发布任何相关的代码片段,但游戏非常庞大,到目前为止WPF的实现非常基础,所以我不确定什么是有用的。

0 个答案:

没有答案