LlSetLinkPrimitiveParamsFast
Mkx(讨论 | 贡献)2020年8月26日 (三) 04:28的版本 (创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   '''提示''': llSetPrimitiveParams, llSetLinkPrimitiveParams, llSetLinkPrimitivePara…”)
| 首页 | 函数 | 事件 | 类型 | 操作符 | 常数 | Flow Control | Script Library | Categorized Library | Tutorials | 
提示: llSetPrimitiveParams, llSetLinkPrimitiveParams, llSetLinkPrimitiveParamsFast这些函数几乎完全相同。对于几乎所有的情况,我们建议您使用llSetLinkPrimitiveParamsFast。在wiki中三个函数被总结在了一起难以翻译,若您想查阅更完整的函数,参见[1]
| 函数名 | 
|---|
| Function: llSetLinkPrimitiveParamsFast( integer link, list rules ); | 
| 参数:• integer link – Link number (0: unlinked, 1: root prim, >1: child prims and seated avatars) or a LINK_* flag • list rules | 
| 返回值:根据规则设置prims参数。 与上面的变体相比,这个函数比其他LSL函数要快。 | 
| 注意事项 | 
|---|
| 有时候llSetLinkPrimitiveParamsFast太快了,也就是说,函数返回后,下一行代码在更新处理完成前执行并返回,导致更新出现混乱。在大多数情况下,行为上没有区别,但有时会有。在这些情况下,您需要使用llSetPrimitiveParams或llSetLinkPrimitiveParams。 这是因为llSetLinkPrimitiveParamsFast有效负载是异步执行的,而llSetPrimitiveParams和llSetLinkPrimitiveParams有效负载是同步执行的(或者延迟使其看起来是同步的)。 | 
| 示例 | 
|---|
| 这是一个简单的脚本,当触碰链接集中的一个prim时,它会亮起这个prim,当脚本安装在链接集中的根prim中时,它会用llSetLinkPrimitiveParams亮起其他的prim。 // Turn all prims off and the one touched turn on
 
default
{
    touch_start(integer num_detected)
    {
        llSetLinkPrimitiveParamsFast(LINK_SET, [
                PRIM_FULLBRIGHT, ALL_SIDES, FALSE,
            PRIM_LINK_TARGET, llDetectedLinkNumber(0),
                PRIM_FULLBRIGHT, ALL_SIDES, TRUE]);
    }
}
一个简单的脚本,当被触碰时,它将所有的子prim在根轴Z轴上向前移动0.25 m。 default
{
    touch_start(integer total_number)
    {
        integer numberOfPrims = llGetNumberOfPrims();
 
        if (numberOfPrims < 2) return;
 
        vector  link_pos;
        list    params;
 
        integer link = 2;// start with first child prim
        do
        {
//          获取子prim的局部位置(即相对于根prim)
            link_pos = llList2Vector(llGetLinkPrimitiveParams(link, [PRIM_POS_LOCAL]), 0);
 
            link_pos.z += 0.25;// relative to root's local z-axis !!!
 
            params += [PRIM_LINK_TARGET, link,
                            PRIM_POS_LOCAL, link_pos];
        }
        while (++link <= numberOfPrims);
 
        if (!llGetListLength(params)) return;
 
//      params列表以PRIM_LINK_TARGET开始(这是我们可以开始的一个技巧)
因此,在这个函数调用中,将哪个数字作为第一个参数实际上并不重要
        llSetLinkPrimitiveParamsFast(2, params);
    }
}
 | 
| 相关函数 | 
|---|
| llGetLinkNumber - 返回脚本所在的prim的链接号。 llGetLinkNumberOfSides - 返回链接的prim的面数。 llGetPrimitiveParams - 获得许多基本参数 llSetLinkPrimitiveParams - 在linkset中设置其他prim的参数 llGetLinkPrimitiveParams - 在likset中获取其他prim的许多基本参数 llSetLinkPrimitiveParamsFast - 在linkset中设置其他prims的参数 llSetAlpha - 简单的方法来设置alpha(透明度)而不需要(重新)设置颜色。 llSetTexture - 设置纹理的简单方法 llSetColor - 设置颜色的简单方法 llSetScale - 设置比例的简单方法 llSetStatus - 设置物理和幻影的方法更简单 | 
| 相关事件 | 
|---|
| 无 | 
