跳转到内容

Trainz/AM&C/containers

来自维基教科书,开放世界中的开放书籍
(从 Trainz/AM&C/container 重定向)
logo
Trainz 培训人员基础知识

Trainz 资产维护与创建
目录 | 开始乐趣 | AM&C | 创建 | 书内参考 ORP 参考:  • 索引 • 容器 • 种类 • 标签 | 附录  • 版本
 词汇表
 HKeys-CM
 HKeys-DVR
 HKeys-SUR
 HKeys-WIN
 鼠标使用
 符号


[e]
KIND(资产组类型)
容器


容器在计算机科学中

[编辑 | 编辑源代码]

计算机科学 (CS) 领域中,'容器' 是一个类型化的 变量,它可以保存其他值。一个原始类型是该语言的数据元素(与二进制机器存储类型相对应),并用于在容器(例如数组(一个索引列表容器,其中所有封闭数据元素都是同一类型))中组合时定义更复杂的类型。'变量' 是一个关键字(一个符号引用),用作“对人类友好的句柄”来引用容器中定义的数据元素的类型,无论它们是什么类型。在一般计算机科学中,变量值可以被更改和重新定义,而在 Trainz 中,某些关键字名称是可变的,并且数据由内容创建者 (CC) 在配置文件中固定。

也就是说,在 Trainz 中,容器是枚举数据类型,它们充当关键字,后面跟着一对花括号 ({}) 括起来,包含在里面的数据,但某些 Trainz 枚举容器类型可能在多个实例中出现[1],因此在需要多个实例时,通过附加数字索引来进行下标,例如(通常看到的特效容器)smoke0、smoke1...、smokeii

在基础级别——机器依赖的地方:nibbles 组成字节,字节组成短字,短字组成长字,并且(有时包括短字和)长字可以加倍、四倍 (x4)、五倍 (x5) 或捆绑成更大的字节块,这些字节块由程序在机器代码级别上的解释来确定类型并为类型分配。
上面的列表都是硬件可以管理的原始类型,将它们解释和处理为语言原始类型是编译器编写者的任务。当一种高级语言适应计算机架构时,它会使用这些机器原始类型来定义其特定语言的数据元素或原始类型。其他更复杂的类型都是根据这些类型定义的。
应用程序依赖于这些定义,用于诸如字符(此文本)、整数(无小数部分,请!)、浮点数(小数十进制 中以 二进制 - 二进制机器形式 表示)等类型。这些计算机语言必须具有匹配的原语,称为 指针,以描述任何和所有数据元素的每个原语的 内存地址(或物理地址)。如果元素不能在 随机访问 操作中直接访问,则它不是一个离散元素,这使其成为一个更大元素的一部分 - 一个包含其物理状态的容器。
位运算 算术中,整数通常与具有关联含义的特定位一起使用。这些被称为标志,与位掩码一起通常用作分类(是此集合的一部分,满足此条件,符合或不符合此测试),以确定进一步处理。这些是 YES-NO 或 TRUE-FALSE 评估,布尔逻辑 的操作。

当数据原语需要成批处理时,将使用容器类型。

  • 字符串是一个包含字符的容器,这些字符不打算被处理为数值数据,或者只是文本;尽管文本的合法表示取决于文本的编码方式(unicode、ASCII、BOM 等)。
  • 数组,一个索引可随机访问的值组是另一种类型的容器。类型数组(整数、字符串等)可以容纳每个匹配的原始类型的元素。在机器级别,数组的开头是一个地址 ('A'),该地址处的值为第一个元素,可以容纳该类型的值。下一个元素的偏移量为数据的长度 (L),单位为字节 - 可以单独寻址(索引以进行随机访问)的最低数据形式 - 因此第一个元素的地址 + L)(A + L)给出下一个元素的地址。这可以用索引或游标变量 'I' 来写,这样第 N 个元素,其中 I= (N-1) 可以通过Ai = (A + L * I) 来寻址,通常表示为V[i],其中 V 是一个变量名。因此,数组中的最大元素数为 N,因为 V[0] 在地址算术中必须为零偏移量,而 V[N] 是一个非法的索引,因为它计算内存中未分配给数组的其他位置的地址。因此,V[N-1] 是 N 个声明的内存地址的最后一个元素,长度为 L 字节。
  • 矩阵


Trainz 容器

[编辑 | 编辑源代码]
  1. 一个 资产内容OS 文件系统上的一个文件文件夹,其中包含自身的自定义文件,然后这些文件被整合到 Trainz 数据库中,由 TrainzUtil内容管理器 管理。大多数资产需要组件部分或其他资产才能完全渲染数字模型,或运行时资产,例如 Trainz 会话和 路线
    1. 勘测员 模块用于在 地图一个 '布局' 或 '路线' 资产)上构建游戏世界,方法是在地图的数据库上放置这些内容/资产 - 这些内容/资产全部包含在地图的 KUID 文件夹 中,这样可以保持所有内容井然有序。
    2. 勘测员模块的 会话编辑器 也用于编写 会话,这些会话将 规则 组合在一起,这些规则代表编译成运行时代码的脚本程序,以创建一个存储在会话的 KUID 文件夹中作为 配置文件 的 '场景' 以供游戏玩耍。这些在组成和功能上与历史上的 '场景' 类型有很大不同,后者在 TrainzScript 应用程序中预先编写并保存为 活动。KIND 活动在 TS2012 之后被弃用,启动它们的菜单按钮除非在数据库中,否则不会显示。
  2. 所有资产都包含一个标题或自定义文件,Trainz 称之为 config.txt,这是一个资源组织和参数声明文本文件,没有它,资产自定义就会失败,或者根据 N3V 扭曲的术语,会产生 错误
  3. 一个 .cdp 文件或 .cdp2、.cdpa 变体)是另一个火车容器,一个可移植的压缩数据集合,我们从其他 Trainzer 那里获得,通过导出和导入跨 Trainz 版本,以及从 DLS 上传和下载的数据形式。
  4. 一个 Trainz 容器是一个 枚举(定义和约束)的复杂类型数据结构,它可能包含标签(通常是虚拟标签)、值或引用(KUID)以及 子容器容器
    1. 它们通常包含可变长度(到 CC)的数组声明(乘客连接点 乘客参数),这些声明用于分配实际的内存和初始化值,这些值通过同一结构中的伴随定义标签或通过从父容器继承来修改。
    2. config 中哪些容器是合法的,取决于资产 KIND 标签定义。
    3. 包含文件是计算机科学类,在 Trainz 中通过 texture.txt 文件引用实现,这意味着列出组件 依赖项 的 KUID。Trainz 中的 texture.txt 文件在 config.txt 声明中令人困惑地应具有扩展名 .txt,而应以 .texture 扩展名结尾。
    4. 在 Trainz 层次结构中,KIND 是一个上层复杂类型,其中隐式嵌套了必要的标签。
      1. 也就是说,几乎所有种类的定义都在 config 中添加了一些标签,这些标签没有嵌套在通常种类的成对花括号中,再加上一个看起来像容器的元素。
      2. 这些是实际上仅适用于该 KIND 的子容器,而 Trainz 容器类型则更通用,因此可以在多个 KIND 需求中声明和使用。实际上,容器实际上是 KIND 的子容器,它们满足了多个到许多资产自定义的更广泛需求。
      3. 隐式嵌套由 KIND 标签的声明控制,因此不在其特殊子容器内的 KIND 标签可以被正确处理。

注释和脚注

[编辑 | 编辑源代码]

参考文献

[编辑 | 编辑源代码]
  1. 定义:实例
华夏公益教科书