`

Clyde学习笔记三(Config)

 
阅读更多

在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
分享到:
评论
2 楼 kevindude 2014-04-11  
包含在了clyde库里
1 楼 silverys 2014-03-28  
请问下,这个Three Rings Resource Editor是在哪里?

相关推荐

    无参数Zig Zag,A-la Clyde Lee 模式 - MetaTrader 5脚本.zip

    无参数Zig Zag,基于"a-la Clyde Lee 模式"。

    Clyde:Clyde 是一款兼容 Arduino 的开源灯,具有很多个性,您可以适应、玩耍并真正称其为您自己的灯

    有关更多信息,请参阅网站: : 或论坛: : 要报告硬件或软件中的错误,请访问: : 安装Clyde 固件分为三个部分:引导加载程序、库和草图。 您可以在 /software/arduino/libraries/ 中找到 Clyde 库。 将“Clyde”库...

    clyde-开源

    通过HTTP维护的轻量级代码,文档或文件保留应用程序。 用户可以创建新的库,子类别和上/下加载文件。 易于使用是其最大的优势。

    clyde

    在_config.yml添加您的网站和作者详细信息。 获得一个工作流,以查看您站点的输出(本地使用或Jekyll)。 开发 该版本使用版本3.3.1构建,但也应该支持较新的版本。 使用安装依赖项: $ bundle install 通过...

    clyde:对话语言和游戏工具

    克莱德-对话语言克莱德(Clyde)是一种用于编写游戏对话的语言。 它支持通过变量和事件进行分支对话,翻译和与游戏的接口。 它在很大程度上受到启发,但它着重于对话而不是叙述。 您可以与在线编辑器一起玩。 这是一...

    frc333-2018-clyde:FRC团队333-2018克莱德代码

    【标题】"frc333-2018-clyde:FRC团队333-2018克莱德代码"所代表的是一个与FIRST Robotics Competition ...这个项目为学习和研究FRC机器人编程提供了一个实际的案例,有助于理解在竞赛中如何使用Java进行机器人控制。

    clyde:用于制作网络3D游戏的Java软件包的集合

    config-配置管理和用于配置操作的工具 delta-在Narya流之上添加了对delta编码对象的支持 编辑器-注释控制的反射对象编辑 导出-版本弹性序列化为XML和二进制数据格式 expr-表达式评估和符号绑定 数学-基本的2D和3D...

    clyde-kun:我的GitHub个人资料的配置文件

    当前使用和学习 有兴趣学习 | | | | | | | --- | --- | --- | --- | --- | --- | --- || 工具 :hammer_and_wrench: 当前使用和学习 有兴趣学习 其他账户 :closed_mailbox_with_raised_flag: 您可以在这些帐户上找到...

    customs英语海关实用PPT课件.pptx

    课件通过情景模拟来帮助学习者应用新学的词汇,如旅客将停留五天,移民官员要求旅客前往柜台四进行检查,旅客将在希尔顿酒店住宿等。 课后作业包括预习新词和仔细阅读课本,以巩固学习内容。 总的来说,这份PPT...

    软件测试-实验7.docx

    第三关中,错误地修改了Direction类的getDeltaX方法,使其返回dy而不是dx。这种错误会导致游戏逻辑出错,例如得分计算不正确。为了发现此类问题,需要编写特定的测试用例,模拟各种可能的移动场景,并验证得分计算的...

    Clyde Project:可持续能源概念、方法、模型和应用-开源

    克莱德项目将开发一个电子上下文模型,用于可持续能源概念的知识建模,以及关于可持续、可再生能源系统的实用方法、模型和应用的知识展示。

    Printed Circuits Handbook

    印刷电路板手册第六版 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 ...

    (2020年整理)英语国家概况选择题(英国部分).doc.pdf

    英国的主要河流包括塞文河(Severn River)、克莱德河(Clyde River)、泰晤士河(Thames River)和亨伯河(Humber River)。这些河流发源于英国的山脉,流经英国的乡村和城市,最后注入大海。 7. 英国的湖泊 英国...

    Mrs-Pac-Man:仅使用Javascript,CSS和HTML重新制作经典的《吃豆人》经典游戏

    玩家在迷宫中导航吃豆人,以收集点,同时避开五颜六色的幽灵(眨眼,小指,墨黑和克莱德)。 如果他们成功收集了所有圆点,则玩家将赢得一个等级。...Pinky和Clyde AI逻辑的代码片段: function ghos

    传媒行业深度报告:AI系列:AI赋能数字人变数智人,丰富应用场景加速落地

    Discord公司在2023年3月应用OpenAI更新其聊天机器人Clyde,以实时回应用户问题,并拓展对话。 AI赋能数字人变数智人是当前传媒行业深度报告的主要内容。AI技术的应用可以赋能数字人,使其变数智人,创造更多的应用...

    unity复刻 Pac-man 吃豆人游戏

    1980年pacman发布,仅有2.47MB游戏中红色的幽灵...4.黄色的幽灵叫做clyde,代表词是“随意”,它的行动路线完全随机。利用这种机制制造出假AI欺骗玩家,即使在现在也是也难以想象。复刻中使用随机路线巡逻。技术力不够

    在x86平台下编译带有LuCI的Openwrt

    /home/clyde/kamikaze(openwrt 路径) 升级 openwrt: 进入 openwrt 路径 ./script/feed update 安装 LuCI: ./script/feed install –a –p luci 四、配置 openwrt make menuconfig ubuntu 9.04 x86 vmware 配置...

    Pacman - a pack of 3 pacman heritage games-crx插件

    您需要在包含多个点的迷宫中导航吃豆子,同时还要找到四个彩色鬼魂:Blinky,Pinky,Inky和Clyde-设法帮助您。 游戏的目标是通过吃掉迷宫中的所有点,完成游戏的“阶段”并开始下一个阶段以及Pac点的迷宫来累积点数...

    The Book of Dads

    - **育儿的挑战与乐趣**:无论是夜间的守护还是日常生活的琐碎,父亲们都在不断学习如何更好地陪伴孩子成长。 - **成长的反思**:许多文章都提到了时间的流逝以及对未来的期待,反映出父亲对于孩子成长过程中所经历...

    2022-2028全球与中国离心泵市场现状及未来发展趋势

    * Clyde Union * Vano * Atlas Copco * DAB * FNS Pumps * Allweiler * 凯泉泵业 * 丰球基因博泵科技 * 利欧泵业 * 南方泵业 * 三联泵业 * 湖南长泵 * 东方泵业 * 双轮股份 行业发展趋势 * 行业背景 * 发展历史 * ...

Global site tag (gtag.js) - Google Analytics