gpt4 book ai didi

c# - 在 C# 中使用和解析文本文件来初始化基于组件的游戏模型

转载 作者:太空狗 更新时间:2023-10-30 00:03:59 24 4
gpt4 key购买 nike

我有一个文本文件应该初始化我的对象,这些对象是围绕基于组件的模型构建的,这是我第一次尝试使用数据驱动的方法,我不确定我是否在朝着正确的方向前进.

我目前想到的文件是这样的

EliteGoblin.txt

@Goblin.txt


[general]
hp += 20
strength = 12
description = "A big menacing goblin"
tacticModifier += 1.3

[skills]
fireball

@ 符号表示此时要解析哪些其他文件[]中的名称对应代码中的组件类下面是如何配置它们

例如 hp += 20 将从 goblin.txt 中获取的值增加 20 等。

我的问题是我应该如何解析这个文件,是否有某种内置于 C# 中的解析器?

我可以更改文档的格式以匹配已在 .net 中支持的已定义格式吗?

我该如何理解每个值的类型?整数/ float /字符串

这看起来是一个可行的解决方案吗?

提前致谢,Xtapodi。

最佳答案

放下平面文件,拿起 XML。一定要研究 XML 序列化。您可以简单地将 C# 中的所有对象创建为类,将它们序列化为 XML,然后将它们重新加载到您的应用程序中,而不必担心解析平面文件。因为您的对象将充当 XML 的架构,所以您不必担心转换对象和编写庞大的解析例程,.NET 会为您处理。你会省去很多头痛的事。

例如,您可以将您的类重写为如下所示:

public class Monster
{
public GeneralInfo General {get; set;}
public SkillsInfo Skills {get; set;}
}
public class GeneralInfo
{
public int Hp {get; set;}
public string Description {get; set;}
public double TacticModifier {get; set;}
}
public class SkillsInfo
{
public string[] SkillTypes {get; set;}
}

...您的 XML 将被反序列化为...

<Monster>
<General>
<Hp>20</Hp>
<Description>A big menacing goblin</Description>
<TacticModifier>1.3</TacticModifier>
</General>
<SkillTypes>
<SkillType>Fireball</SkillType>
<SkillType>Water</SkillType>
</SkillTypes>
</Monster>

..我的一些类名、层次结构等可能是错误的,因为我很快就完成了这一点,但您已经了解了序列化如何工作的一般要点。

关于c# - 在 C# 中使用和解析文本文件来初始化基于组件的游戏模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3257596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com