我怎样才能做到这一点?或者序列化程序会自动进行递归,并将所有这些子对象序列化为XML吗?
举个例子,如何序列化包含其他类对象的类本身!那是这个问题的核心!
我试过这个,并没有向目标XML文件输出任何内容(XML头除外).
我的问题是我需要序列化一个简单的类,它只包含一个List对象.但是,这些实体也是Lod List对象.(另一个好处是,如果我可以避免某些组件的序列化,因为一些组件是派生的并且在其中包含字典).
public void SaveCurrent(string MapFileName)
{
string MapPath = world_.game_.Content.RootDirectory + "/Maps/" + MapFileName + ".xml";
StreamWriter MapWriter = new StreamWriter(MapPath);
Map SavedMap = new Map();
SavedMap.Entities = world_.Entities;
XmlSerializer xSerializer = new XmlSerializer(SavedMap.GetType());
xSerializer.Serialize(MapWriter, SavedMap);
MapWriter.Close();
}
Run Code Online (Sandbox Code Playgroud)
这是进行序列化的代码片段.
public class Map
{
internal string MapName;
internal string MapDescription;
internal string MapAuthor;
public List<Entity> Entities = new List<Entity>();
}
Run Code Online (Sandbox Code Playgroud)
这是序列化的类.如果从同一个程序集调用序列化,内部会被视为公共吗?代码在SavedMap.GetType()函数处抛出异常,我也尝试typeof(Map)过,但没有成功.我想这是因为我需要一些其他方法来处理每个新类(深度序列化)我该怎么做?
另外,我在一些例子中发现,没有接口继承或属性,因此我也没有添加它们,但我打算使用IXmlSerializable,虽然我不知道如何在WriteXML中调用另一个序列化实现.
其中哪一个更适合自上而下的射击游戏?
我听说Box2D表现得更快,但我也注意到它缺乏对XNA的更广泛的社区支持(它似乎用于闪存 - 出于我不知道的原因).
然而,Farseer是为XNA而构建的,似乎适合它并且表现非常好.在我看来,Farseer的优点还在于它干净,易于使用的API(它也非常适合我的游戏引擎结构).但是我很害怕如果我使用它会有一些缺点(子弹和高速机体?奇怪的不是数字崩溃?)
总的来说,如果您指出哪一个适合更好的XNA/PC开发,我将不胜感激.
我需要这个的原因:
我现在应该得到你的意见吗?请保持直截了当告诉我,我使用Farseer而不是Box2D做了错误的步骤吗?(我必须在等待答案时开始工作.)
提前致谢
错误在此代码中:
//myutil.h
template <class T, class predicate>
T ConditionalInput(LPSTR inputMessage, LPSTR errorMessage, predicate condition);
//myutil.cpp
template <class T, class Pred>
T ConditionalInput(LPSTR inputMessage, LPSTR errorMessage, Pred condition)
{
T input
cout<< inputMessage;
cin>> input;
while(!condition(input))
{
cout<< errorMessage;
cin>> input;
}
return input;
}
...
//c_main.cpp
int row;
row = ConditionalInput("Input the row of the number to lookup, row > 0: ",
"[INPUT ERROR]: Specified number is not contained in the range [row > 0]. "
"Please type …Run Code Online (Sandbox Code Playgroud) 我已经在几个地方读过,可以将XNA和WPF结合起来.我个人需要的是一个游戏/地图编辑器,它实际上就是游戏本身(会让引擎在后台运行),因为地图系统将对象的序列化版本写入XML,稍后会加载.
我的问题是我需要一个标准应用程序,它在后台运行引擎,并在用户从前端创建游戏资产时创建游戏资产,然后将它们序列化并放入XML.
这也可以派上用场,如果可以从游戏中运行WPF,用户界面,如果有人有这方面的经验,我会很感激,如果他/她分享它.
简而言之:我如何制作WPF(或winforms)应用程序,其中XNA代码在其中一个控件中运行,并在后台运行?
首先要解释我正在尝试做什么:
void Foo(int &num, bool condition);
Foo(x, x > 3);
Run Code Online (Sandbox Code Playgroud)
这段代码基本上会在调用函数之前评估条件的bool,然后传递纯true或false.我正在寻找一种方法让它通过条件本身,所以我可以做这样的事情:
void Foo(int &num, bool condition)
{
while(!condition)
{
num = std::rand();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道可以通过传递一个包含条件的字符串并解析后者来解决这个问题,我现在正在研究它,但我觉得它效率很低.接受的答案将是解释除了包含条件的字符串之外的任何其他方式的解决方案,或者澄清这种传递条件的方式是不可能的答案.
提前致谢
这是半超级用户的问题,但我认为它更适合.
我大部分时间都在使用shell,因此IDE不适合我的工作流程.然而,我更喜欢一个整齐的项目,而不是一个无用的一次性旅行.我发现自己花费太多时间来编写makefile(即使是cmakelists也会花费太多的时间,有时感觉不直观).
现在我已经给自己写了一个注释,理想的快速构建/脚手架系统会起什么样的作用,我会来写一些类似的东西,除非已经存在.我宁愿投入一些努力,开始自己的.
理想情况下,构建系统可以快速构建项目.
build <project-name> <language>
Run Code Online (Sandbox Code Playgroud)
这将简单地使用具有指定名称的目标制作makefile(或其他方便的东西).它准备它,因此它输出一个名为project-name的可执行文件.
这将规范要编译的源文件:
add source <source-file>
Run Code Online (Sandbox Code Playgroud)
这将规范要链接的任何必要的库:
add library <library-name>
Run Code Online (Sandbox Code Playgroud)
我更喜欢从shell ad-hoc中调用它,并让它创建自己的脚手架,而不是自己创建makefile(或cmakelists).如果没有,那么为了自动完成.
请记住,除了快速实验或演示之外,这绝不是意味着什么 - 当我不想用手动搭建项目的行为让别人(或我自己)厌倦时.
对我来说,这似乎是一种启动快速C/C++项目的相当直观和简单的方法.那么有这样的事情还是我幻想一下?(诅咒你的webdevs和你太简单的脚手架工具!)
请为快速C/C++项目建议一个固定的构建/脚手架系统.
在将一个字段分配给另一个字段时,C#是仅仅复制数据还是实际创建链接?在这个文章有游戏引擎结构的一个例子.那里的编码器包含其父组件.在C#中,它们只包含父副本,还是引用它?
示例代码:
class World
{
...
public void Update()
{
...
ent.OnAttach(this);
...
}
...
}
class Entity
{
...
public void OnAttach(World world)
{
world_ = world;
}
...
}
Run Code Online (Sandbox Code Playgroud)
Entity对象现在可以访问World对象并可以访问它的字段和方法,就像在artice中一样吗?(或者我误解了代码?)
我有两个类 - 一个持有实体信息,其他持有组件信息.现在的问题是Entity类需要已经定义的Component类才能在子元素的向量中使用它,但同时Component需要Entity将它声明为它的父元素(我保持所有链接在它们之间).这会产生奇怪的错误,即使IntelliSense说它已经定义了.
我怎样才能克服这个困难?
c++ ×4
c# ×2
xna ×2
.net ×1
box2d ×1
c ×1
class ×1
data-members ×1
farseer ×1
game-engine ×1
game-physics ×1
header ×1
header-files ×1
lambda ×1
linux ×1
makefile ×1
physics ×1
templates ×1
wpf ×1
xml ×1