匿名
未登录
中文
讨论
贡献
创建账号
登录
Minecraft基岩版开发Wiki
搜索
致编者:请牢记我们的域名
wiki.mcbe-dev.net
!
致编者:欢迎加入本Wiki的官方交流
QQ群
或
Discord服务器
!
基岩版1.19.31
现已发布!(
了解更多
)
Inner Core
现已支持Xbox模组联机!(
了解更多
)
如果您是第一次来到本Wiki,欢迎
注册一个账户
点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
编辑“
Molang
”(章节)
来自Minecraft基岩版开发Wiki
命名空间
页面
讨论
更多
更多
语言
变体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
页面操作
阅读
编辑
历史
刷新
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
==分域示例== {{ambox|text=翻译后需按照本Wiki的格式重新组织文本语言。}} ===实体脚本定义=== 在定义文件中有一个预计算值的部分,这些值在动画和渲染控制器被处理之前立即执行,并存储在实体中。其目的是预先计算您可能希望在脚本中再次使用的任何昂贵的复杂值,长作用域索引变量更新,或者通常是任何一次性计算的呈现刻。 <syntaxhighlight lang="json" line> "scripts": { "pre_animation": [ "variable.my_constant = (Math.cos(query.modified_distance_moved * 38.17) * query.modified_move_speed;", "variable.my_constant2 = Math.exp(1.5);" ] }, </syntaxhighlight> ===动画与动画控制器文件=== 这些动画皆是数字操作,用于控制播放哪些动画以及如何设置其骨骼动画。 <code>variable.variable_name</code> 与 <code>query.function_name</code> 指的是当前正被渲染的实体。 使用其可访问语言中的任何内容,但不包含诸如[[材质]]、[[纹理]]或[[几何]]等资源(因为这些必须存在且有效,否则这将是内容错误)。 ===渲染控制器=== 这里有几种不同的表达方式,其中上下文可表明其允许与否。与动画控制器一样,实体访问器指的是当前实体,但是取决于其上下文中内容还可以访问[[材质]]、[[纹理]]与[[几何]]。这里有两种不同的渲染控制器: *数组定义(可选) *资源使用(必需) “数组定义”部分允许您根据需要按资源类型创建资源数组,以便您在“资源使用”部分中引用。 ====数组表达式==== 对于三种资源类型([[材质]]、[[纹理]]与[[几何]]),其中任意一种都可以定义为一个资源数组。资源的名称是定义文件中的好名字(nice-name,可能指的是机器可识别的变量名)。下面以以材质为例: <syntaxhighlight lang="json" line> "arrays": { "materials": { "array.my_array_1": ["material.a", "material.b", "material.c"], "array.my_array_2" : ["material.d", "material.e"], "array.my_array_3" : ["array.my_array_1", "material.my_array_2"], "array.my_array_4" : ["array.my_array_2", "material.my_array_3"], "array.my_array_5" : ["array.my_array_1", "material.my_array_1", "material.my_array_4"], "array.my_array_6" : ["array.my_array_1", "material.f"], ... }, </syntaxhighlight> 请注意,数组的所有元素必须是同一类型。即[[纹理]]数组只能包含[[纹理]]为元素,其他亦然。 一个数组可以引用零个或多个数组(如果需要,包括重复的数组)且同样可以引用零个或多个材质(再说一遍!如果需要,可以包括重复的数组)的任意组合,且可以有任意个数组,每个数组包含任意个元素。同理,如果数组的成员中包含数组,则它们的长度也不必相同。在“资源使用”部分中为数组编制索引时,要使用数字表达式。若表达式值为负,则会以零为索引。任何非负索引都将转换为整数,并根据数组的大小进行整理,原理如下: <syntaxhighlight lang="json" line> index = max(0, expression_result) % array_size </syntaxhighlight> ====[[客户端|资源]]表达式==== 资源表达式必须根据上下文返回特定类型的单个资源。 例如,在 <code>geometry</code> 组,必须生成将生成单个geometry的表达式。一些例子: 以每秒一次的速率在geometry数组中循环 <syntaxhighlight lang="json" line> "geometry": "array.my_geometries[query.anim_time]" </syntaxhighlight> 根据实体标志选择geometry <syntaxhighlight lang="json" line> "geometry": "query.is_sheared ? geometry.sheared : geometry.woolly" </syntaxhighlight> 使用特定的geometry <syntaxhighlight lang="json" line> "geometry": "geometry.my_geo" </syntaxhighlight> 睡眠时使用特定的geometry,否则根据余弦曲线遍历数组,当余弦曲线为负时,几乎有一半的时间使用数组第1个内容。 <syntaxhighlight lang="json" line> "geometry": "query.is_sleeping ? geometry.my_sleeping_geo : array.my_geos[math.cos(query.anim_time * 12.3 + 41.9) * 10 + 0.6]" </syntaxhighlight> ====资源段落==== =====[[几何]]===== geometry部分指定渲染时要使用的geometry。您可以在定义文件中指定尽可能多的渲染控制器,单个渲染控制器仅关注如何渲染单个geometry。注意,geometry可以使用任意数量的骨骼和多边形进行任意复杂的操作。 =====[[材质]]===== “材质”部分指定如何映射geometry的骨骼的材质。单个材质将映射到整个geometry上。材质的表达式按所列顺序计算。每个语句的第一部分是要应用材质的模型骨骼的名称,第二部分是要使用的材质。模型部件名可以使用 <code>*</code> 进行通配符匹配。例如 : <syntaxhighlight lang="json" line> "materials": [ { "*": "Material.default" }, { "TailA": "array.hair_colors[variable.hair_color]" }, { "Mane": "array.hair_colors[variable.hair_color]" }, { "*Saddle*": "variable.is_leather_saddle ? material.leather_saddle : material.iron_saddle" } ], </syntaxhighlight> #This will start by applying Material.default to all model parts. #It will set the material on a model part named <code>TailA</code> to the result of the expression <code>Array.hairColors[variable.hair_color]</code>. This will look up some previously created variable on the entity named hair_color and use that to index into a material array called <code>array.hair_colors</code> defined in this render controller. This will overwrite the Material.default material set in the line above. #It will look up the same material as the expression is identical, and apply it to the <code>Mane</code> model part. #If will find any model part starting with, ending with, or containing <code>Saddle</code> (case sensitive) and change its material to either <code>material.leather_saddle</code> or <code>material.iron_saddle</code> depending on the previously set entity variable <code>variable.is_leather_saddle</code>.
摘要:
请注意您对Minecraft基岩版开发Wiki的所有贡献都被认为是在知识共享署名-非商业性使用-相同方式共享下发布,请查看在
Minecraft基岩版开发Wiki:版权
的细节。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源。
请勿私自提交受版权保护的材料!
您也可以将取自Mojang(及其网站、说明、指南、艺术概念、渲染图、出版物、第三方网站组件,以及其他此类Mojang已对外公开的受保护材料)的内容上传至Minecraft基岩版开发Wiki。所有权力、署名与利益在合适时仍归属Mojang,也不依照许可被授权。
取消
编辑帮助
(在新窗口中打开)
该页面属于1个隐藏分类:
Category:使用DynamicPageList3的dplreplace解析器函数的页面
我们提供服务需要使用Cookie。您使用我们的服务,即表示您同意我们使用Cookie。
更多信息
确定
导航
导航
首页
最近更改
随机页面
社区门户
新闻动态
计划
沙盒
关于
导航
开发
附加包
模组SDK
ModPE Installer
BlockLauncher
Inner Core
ModdedPE
基岩版专用服务器
ElementZero
Cloudburst Nukkit
合作伙伴
Mineprogramming Wiki
bedrock.dev
友情链接
中文 Minecraft Wiki
我的世界中文论坛
MCDevs Wiki
Inner Core 中文社区
wiki工具
wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志
其他项目
变体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體