c#开发的openra的yaml文件读取和分析

caimouse caimouse     2023-04-05     519

关键词:

C#开发的OpenRA的yaml文件读取和分析

在前面已经看到OpenRA所有资源管理,都是来源于mod.yaml文件。

说明了这个文件是一个资源描述的清单,

系统启动之初就会读取这个文件,以便得到当前游戏所有资源列表。

从前面分析整个mod.yaml文件可以知道,它是一个键值对的描述文件。

yaml文件具有以下特点:

YAML 是 "YAML Ain\'t a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

YAML 的配置文件后缀为 .yml,如:runoob.yml 。

基本语法

大小写敏感

使用缩进表示层级关系

缩进不允许使用tab,只允许空格

缩进的空格数不重要,只要相同层级的元素左对齐即可

\'#\'表示注释

YAML 支持以下几种数据类型&#x

c#开发的openra的mod配置文件的容器manifest类

C#开发的OpenRA的mod配置文件的容器Manifest类在前面已经看到OpenRA所有资源管理,都是来源于mod.yaml文件。上次也分析到yaml文件采用类MiniYaml来管理读取,最后通过函数MiniYaml.FromStream()返回整个文件mod.yaml的内容,这些内容就会通... 查看详情

c#开发的openra的mod配置文件的容器manifest类

C#开发的OpenRA的mod配置文件的容器Manifest类在前面已经看到OpenRA所有资源管理,都是来源于mod.yaml文件。上次也分析到yaml文件采用类MiniYaml来管理读取,最后通过函数MiniYaml.FromStream()返回整个文件mod.yaml的内容,这些内容就会通... 查看详情

c#开发的openra的mod.yaml文件

C#开发的OpenRA的mod.yaml文件在OpenRA游戏里,会看到这样一段代码:ManifestLoadMod(stringid,stringpath)IReadOnlyPackagepackage=null;tryif(!Directory.Exists(path))Log.Write("debug",path+"isnotavalidmodpackage");returnnull;package=newFolder(path);if(package.Contains("mod.yaml"))retur... 查看详情

c#开发的openra加载文件的管理

C#开发的OpenRA加载文件的管理在前面我们分析了mod.yaml文件,发现里面有很多文件列表,比如下像下面的文件:Packages:~^SupportDir|Content/cnc~^SupportDir|Content/cnc/movies^EngineDir$cnc:cnc^EngineDir|mods/common:common~speech.mix~conquer.mix~sounds.mix~tempicnh.... 查看详情

c#开发的openra加载文件的管理

C#开发的OpenRA加载文件的管理在前面我们分析了mod.yaml文件,发现里面有很多文件列表,比如下像下面的文件:Packages:~^SupportDir|Content/cnc~^SupportDir|Content/cnc/movies^EngineDir$cnc:cnc^EngineDir|mods/common:common~speech.mix~conquer.mix~sounds.mix~tempicnh.... 查看详情

c#开发的openra的读取文件的函数

C#开发的OpenRA的读取文件的函数在OpenRA游戏里,读取文件是必备的功能。因为游戏大部分文件都是图片、动画、语音。很久以前,我以为开发游戏的主要功能是在程序开发上,其实游戏的大部分工作都不是在开发上,而是在美工... 查看详情

c#开发的openra的游戏主界面怎么样创建5

继续游戏主界面创建的主题,前面已经介绍到怎么样创建一个OpenRA的帐号显示,接着下来介绍中间显示新闻的消息窗口,如下图所示:这个界面看起来比较简单,只有一个下拉按钮显示,但是背后的实现是比较复杂的。因为它要... 查看详情

c#开发的openra的判断文件是否存在和目录文件读写

C#开发的OpenRA的判断文件是否存在和目录文件读写在OpenRA游戏里,当搜索到所有Mods目录之后,就根据用户选择来打开指定的目录的游戏。varmod=LoadMod(pair.Id,pair.Path);大体上,这行代码就是这样调用:LoadMod("cnc","E:\\\\Work\\\\sample\\\\C_... 查看详情

c#开发的openra游戏加载界面的实现

C#开发的OpenRA游戏加载界面的实现游戏的UI是一个游戏必备,但是游戏的UI都是自己处理的,不能使用像Windows自带的UI。这样游戏的UI,其实也是使用游戏的方式来显示的,只不过使用了低帧率的方式来显示。比如OpenRA游戏界面,... 查看详情

c#开发的openra游戏加载界面的实现

C#开发的OpenRA游戏加载界面的实现游戏的UI是一个游戏必备,但是游戏的UI都是自己处理的,不能使用像Windows自带的UI。这样游戏的UI,其实也是使用游戏的方式来显示的,只不过使用了低帧率的方式来显示。比如OpenRA游戏界面,... 查看详情

c#开发的openra的游戏主界面怎么样创建3

继续游戏主界面创建的主题,我们知道游戏的主界面上有很多部件,比如显示文本的标签(LabelWidget),显示按钮(ButtonWidget)。那么这些部件又是如何创建在主界面上的呢?其实这些部件是否显示,都是来源于文件yaml,在这里... 查看详情

c#开发的openra的扩展方法

C#开发的OpenRA的扩展方法在我们以往的开发方法认知里,对一个类进行扩展方法,只有继父类,然后在子类里创建新的内容。但是C#又给我们上了一课,它不但可以采用前面的方法,而且可以对类没有进行继承,也能扩展类型的... 查看详情

c#开发的openra的游戏主界面怎么样创建6

继续游戏主界面创建的主题,前面介绍了创建左边创建注册OpenRA的帐号,接着中间是创建显示新闻内容,最右边就是显示EVA的图片和版本号,本文就来介绍图片EVA和版本号的显示。要想显示图片EVA,那么就得搞懂图片的来源,才... 查看详情

c#开发的openra使用trimexcess方法

C#开发的OpenRA使用TrimExcess方法当你在细看OpenRA的代码,就会发现在下面这段代码添加了一个方法:foreach(varnodesinlevels)nodes.TrimExcess();在上面代码里遍历整个节点列表,把所有节点都调用TrimExcess方法处理一下,这样做的意义何在?... 查看详情

c#开发的openra使用trimexcess方法

C#开发的OpenRA使用TrimExcess方法当你在细看OpenRA的代码,就会发现在下面这段代码添加了一个方法:foreach(varnodesinlevels)nodes.TrimExcess();在上面代码里遍历整个节点列表,把所有节点都调用TrimExcess方法处理一下,这样做的意义何在?... 查看详情

c#开发的openra的加载游戏ui绘制

C#开发的OpenRA的加载游戏UI绘制通过前面的分析,对整个UI的显示原理和细节,都已经比较清楚了。整个过程,就是先构造着色器,然后编译和使用着色器,再定义着色器的入口,再把纹理和顶点按照着色器入口数据进行输入,就... 查看详情

c#开发的openra的游戏主界面怎么样创建4

继续游戏主界面创建的主题,前面已经说到怎么样找到mainmenu.yaml来显示主界面,也说了怎么样找到各个子控件类。现在就来仔细分析一下,主界面每一部分的功能。比如下面这个区域的界面是怎么样创建:要创建这一小部分的... 查看详情

c#开发的openra的游戏主界面怎么样创建8

继续游戏主界面创建的主题,接着下来,就剩最下面的功能了,但是也是最复杂的一部分,因为这是实现整个游戏的交互功能,比如单人玩游戏的选择,多人玩游戏的选择,还游戏设置等等内容,如下图:这部分的功能都是定义... 查看详情