LlSetLinkPrimitiveParamsFast

来自人工智能助力教育知识百科
Mkx讨论 | 贡献2020年8月26日 (三) 04:28的版本 (创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} '''提示''': llSetPrimitiveParams, llSetLinkPrimitiveParams, llSetLinkPrimitivePara…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

Template:Needs Translation/


提示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 - 设置物理和幻影的方法更简单

相关事件