在clyde中,几乎所有的外部资源都是以config的形式存在。每个config都有一个name来唯一标识这个config。ManagedConfig是所有config的基类,它是一个抽象类,定义了一些最基础的方法,ParameterizedConfig是它直接的子类。
1. ParameterizedConfig
ParameterizedConfig引入了parameter这一概念,利用parameter可以实现对config的个性化定制,这样可以复用绝大多数的config,并且减少config的数量。比如你有一个model,这个model在不同的场景需要应用不同的贴图,那么与其制作2个不同的config,不如利用parameter这一特性,在resource editor中选择创建一个direct parameter,给它一个名字叫“Texture”,然后把鼠标移到material mapping这一栏,按下ctrl-shift-C,复制material mapping属性的路径到剪贴板,然后再把此路径粘贴到刚才创建的parameter的path中。完成后,以后在代码中,可以这样来引用:
new Model(ctx, "flag.dat", "Texture", "texture.png");
“Texture”是parameter的name,“texture.png”是parameter的值。在其内部是以一个argumentMap来实现的。
/** The arguments applied to the configuration, if any. */
@DeepOmit
protected transient ArgumentMap _args;
以此也引申出base和derived概念。
/** The instance from which the configuration is derived, if any (used to prevent the base
* from being garbage-collected). */
@DeepOmit
protected transient ParameterizedConfig _base;
/** Maps arguments to derived instances. */
@DeepOmit
protected transient SoftCache<ArgumentMap, ParameterizedConfig> _derived;
2. ConfigReference
ConfigReference以name和argumentMap属性保存了对一个config的引用,因为我们已经知道每个config都有一个name,但是这个name指向的config包括base和derived部分,所以以name和argumentMap可以唯一确定一个config的值。
/** The name of the referenced configuration. */
@Intern
protected String _name;
/** The arguments of the reference, mapped by name. */
protected ArgumentMap _arguments = new ArgumentMap();
如果这个configReference是可以被编辑的,即标注有@Editable,在config editor中可以被编辑,并且在编辑时可以看到保存在configReference中的parameter的值。而且这个configreference是可以被嵌套的,比如说modelConfig中有materialMapping,materialMapping中有一个configReference<MaterialConfig>,在MaterialConfig中有一个configReference<TextureConfig>,那么在创建一个materialMapping的时候可以编辑一个MaterialConfig,在编辑MaterialConfig时可以再继续编辑TextureConfig。
3. ConfigGroup
在clyde中,几乎所有的配置都保存为config,都是从同一个基类中派生出来,但是从应用的角度来讲,一般可以分成2类,一类是所谓的managed config,像角色或者场景中的对象,它们在ConfigManager启动的时候被加载进来,保存在文件系统的rsrc/config路径下,并且在classpath中的rsrc/config路径下有一个manager.properties文件,一个典型配置文件看起来如下:
types = global, model, user_interface, scene
global.classes = com.threerings.tudey.config.ActorConfig, \
com.threerings.tudey.config.AreaConfig, \
com.threerings.tudey.config.BehaviorConfig, \
com.threerings.opengl.gui.config.CursorConfig, \
com.threerings.tudey.config.EffectConfig, \
com.threerings.opengl.gui.config.FontConfig, \
com.threerings.tudey.config.GroundConfig, \
com.threerings.opengl.material.config.MaterialConfig, \
model.classes = com.threerings.opengl.gui.config.CursorConfig, \
com.threerings.opengl.gui.config.FontConfig, \
com.threerings.opengl.material.config.MaterialConfig, \
user_interface.classes = com.threerings.opengl.gui.config.CursorConfig, \
com.threerings.opengl.gui.config.FontConfig, \
com.threerings.opengl.gui.config.StyleConfig
scene.classes = com.threerings.tudey.config.ActorConfig, \
com.threerings.tudey.config.AreaConfig, \
com.threerings.tudey.config.EffectConfig, \
com.threerings.tudey.config.GroundConfig, \
resource.classes = com.threerings.opengl.model.config.ModelConfig, \
com.threerings.opengl.model.config.AnimationConfig, \
com.threerings.opengl.gui.config.UserInterfaceConfig
在这里,每个config class对应的不再是一个单个的config,而是一个config group,每一个config group在文件系统rsrc/config路径下会有一个对应的.dat文件,在configManager启动时,会默认的读取type为global下每个config class对应的.dat文件,载入相应的config group。这些config可以在config editor中被编辑。
在上图可以看到,global标签页对应的是global type,group对应的是每一个config class,在每个group下有多个config,这些config还可以以目录的形式组织起来。
除了managed config之外,还有单个形式的config,比如model或者animation,这些config只有在需要用到的时候才会被载入,model和animation是在resource editor中编辑的。
- 大小: 27.4 KB
- 大小: 46.5 KB
分享到:
相关推荐
无参数Zig Zag,基于"a-la Clyde Lee 模式"。
有关更多信息,请参阅网站: : 或论坛: : 要报告硬件或软件中的错误,请访问: : 安装Clyde 固件分为三个部分:引导加载程序、库和草图。 您可以在 /software/arduino/libraries/ 中找到 Clyde 库。 将“Clyde”库...
通过HTTP维护的轻量级代码,文档或文件保留应用程序。 用户可以创建新的库,子类别和上/下加载文件。 易于使用是其最大的优势。
在_config.yml添加您的网站和作者详细信息。 获得一个工作流,以查看您站点的输出(本地使用或Jekyll)。 开发 该版本使用版本3.3.1构建,但也应该支持较新的版本。 使用安装依赖项: $ bundle install 通过...
克莱德-对话语言克莱德(Clyde)是一种用于编写游戏对话的语言。 它支持通过变量和事件进行分支对话,翻译和与游戏的接口。 它在很大程度上受到启发,但它着重于对话而不是叙述。 您可以与在线编辑器一起玩。 这是一...
【标题】"frc333-2018-clyde:FRC团队333-2018克莱德代码"所代表的是一个与FIRST Robotics Competition ...这个项目为学习和研究FRC机器人编程提供了一个实际的案例,有助于理解在竞赛中如何使用Java进行机器人控制。
config-配置管理和用于配置操作的工具 delta-在Narya流之上添加了对delta编码对象的支持 编辑器-注释控制的反射对象编辑 导出-版本弹性序列化为XML和二进制数据格式 expr-表达式评估和符号绑定 数学-基本的2D和3D...
当前使用和学习 有兴趣学习 | | | | | | | --- | --- | --- | --- | --- | --- | --- || 工具 :hammer_and_wrench: 当前使用和学习 有兴趣学习 其他账户 :closed_mailbox_with_raised_flag: 您可以在这些帐户上找到...
第三关中,错误地修改了Direction类的getDeltaX方法,使其返回dy而不是dx。这种错误会导致游戏逻辑出错,例如得分计算不正确。为了发现此类问题,需要编写特定的测试用例,模拟各种可能的移动场景,并验证得分计算的...
克莱德项目将开发一个电子上下文模型,用于可持续能源概念的知识建模,以及关于可持续、可再生能源系统的实用方法、模型和应用的知识展示。
印刷电路板手册第六版 Part 1 Lead-Free Legislation Chapter 1. Legislation and Impact on Printed Circuits 1.3 1.1 Legislation Overview / 1.3 1.2 Waste Electrical and Electronic Equipment (WEEE) / 1.3 ...
英国的主要河流包括塞文河(Severn River)、克莱德河(Clyde River)、泰晤士河(Thames River)和亨伯河(Humber River)。这些河流发源于英国的山脉,流经英国的乡村和城市,最后注入大海。 7. 英国的湖泊 英国...
玩家在迷宫中导航吃豆人,以收集点,同时避开五颜六色的幽灵(眨眼,小指,墨黑和克莱德)。 如果他们成功收集了所有圆点,则玩家将赢得一个等级。...Pinky和Clyde AI逻辑的代码片段: function ghos
Discord公司在2023年3月应用OpenAI更新其聊天机器人Clyde,以实时回应用户问题,并拓展对话。 AI赋能数字人变数智人是当前传媒行业深度报告的主要内容。AI技术的应用可以赋能数字人,使其变数智人,创造更多的应用...
1980年pacman发布,仅有2.47MB游戏中红色的幽灵...4.黄色的幽灵叫做clyde,代表词是“随意”,它的行动路线完全随机。利用这种机制制造出假AI欺骗玩家,即使在现在也是也难以想象。复刻中使用随机路线巡逻。技术力不够
/home/clyde/kamikaze(openwrt 路径) 升级 openwrt: 进入 openwrt 路径 ./script/feed update 安装 LuCI: ./script/feed install –a –p luci 四、配置 openwrt make menuconfig ubuntu 9.04 x86 vmware 配置...
您需要在包含多个点的迷宫中导航吃豆子,同时还要找到四个彩色鬼魂:Blinky,Pinky,Inky和Clyde-设法帮助您。 游戏的目标是通过吃掉迷宫中的所有点,完成游戏的“阶段”并开始下一个阶段以及Pac点的迷宫来累积点数...
- **育儿的挑战与乐趣**:无论是夜间的守护还是日常生活的琐碎,父亲们都在不断学习如何更好地陪伴孩子成长。 - **成长的反思**:许多文章都提到了时间的流逝以及对未来的期待,反映出父亲对于孩子成长过程中所经历...
* Clyde Union * Vano * Atlas Copco * DAB * FNS Pumps * Allweiler * 凯泉泵业 * 丰球基因博泵科技 * 利欧泵业 * 南方泵业 * 三联泵业 * 湖南长泵 * 东方泵业 * 双轮股份 行业发展趋势 * 行业背景 * 发展历史 * ...
#### 三、手册特色 - **全面性**:本书涵盖了PCB设计、制造到测试的各个环节,内容全面详实。 - **实用性**:提供了大量实用的设计方法和技术指南,对于从事PCB相关工作的技术人员具有很高的参考价值。 - **前瞻性**...