Second Life --- lsl script 学习(1)
来源:互联网 发布:zm400条码机软件 编辑:程序博客网 时间:2024/06/06 03:35
林登脚本语言初看有点像C语言。然而,它比C语言编程容易。没有指针,你可以直接比较 字符串而无须使用strcmp这样的函数。LSL不是面向对象的;你不能创建你自己的对象,程序提供了一些3D相关的对象。LSL是基于状态的。每个 LSL脚本有一个特定的状态,运行每个函数来在一系列状态中转化。这是和大部分编程语言不同的概念。当你在大部分语言中构建状态机时,LSL的状态机概念 已经是语言的内建部分了。
LSL脚本存在于第二人生中的3D元素的内部。对象是元素的集合。比如,在第二人生中的汽车可以是一个简单 物体。但是,汽车对象可以是由很多基本元素组成的,每个部分包含自己的脚本。除此以外,这些基本元素可以互相通信,甚至和人类玩家通信。使用更高级的编 程,元素甚至可以和SL外部的Web页面通信。
LSL也是事件驱动的。大部分的第二人生中的物体通过事件触发状态转换而工作。第二人生提供了许多不同的事件类型。许多都是基于用户的,比如用户的触摸或者坐在一个对象上;但是,它也支持计时器事件,无须用户交互。
状态(State)是LSL中的一种流程控制手段,在不同状态下触发同一事件时,可以产生不同的行为,我们可以利用状态使得LSL实现相对复杂的功能。
***************************************************************************************************************
下面是一个简单的例子,引自LSL Wiki
{
state_entry()
{
llSay(0,"Hello, Avatar!");
}
touch_start(integer total_number)
{
state restart_default;
}
}
state restart_default
{
state_entry()
{
state default;
}
}
对于一个LSL脚本来说,必须至少有一个被称为default的默认状态,而每一个状态中必须至少含有一个事件(可以是所有事件中的任意一个)。default的状态是必须放置在其他状态之前的,如果有其他状态被定义在default之前,则会产生语法错误。
LSL中其他的流程控制手段有
循环:for,do-while,while 与C/Java中用法类似
选择:if-else 用法与C/Java类似,但使用if/else if时选择条件最多不超过24个,如果需要更多选择情况,则需要在选择条件中嵌套使用if-else
jump: 类似其他语言中的goto
retrun: 与C/Java中用法类似
数据类型特点
integer 整型 32位 范围: -2147483648 到 2147483647
float IEEE-754标准32位浮点数
string 字符串 采用UTF-8标准
key 用来标记SL中物体、图象、声音、动作等库存文件以及用户名的特殊字符串
如 "66864f3c-e095-d9c8-058d-d6575e6ed1b8" 就是一个key
list LSL中没有array这个数据类型,作为替代,LSL中使用了list,list 可以看成时一个1维的array,list中可以存放除list外LSL支持的所有数据类型
LSL中引入了2个三维的数据类型
vector 向量 vector由3个浮点数组成如 vetctor a = <1.0,2.0,3.0>;
rotation 旋转 rotation由4个浮点数组成 如 rotation b = <0.0,0.0,0.0,1.0>;
LSL的库函数
LSL中一共有30个类别约200多个库函数,提供用户最大的使用方便库函数类别如下:
- Agent/Avatar
- Camera
- Communications
- Collision
- Color
- Controls
- Dataserver
- Detection
- Dynamics/Movement/Physics
- Group
- Inventory
- Land (Ground/Terrain)
- Light
- Link
- List
- Math
- Particle
- Primitive/Object
- script
- Sensor
- Simulator (Environment/World)
- Sound
- String (Text/Name)
- Teleport
- Texture
- Time
- Transformation: Rotation/Scaling/Translation
- Vehicle
- Video
- Weather
- Second Life --- lsl script 学习(1)
- Second Life --- lsl script 学习(2)
- LSL学习笔记(1)
- Second life 客户机,第 1 部分: 玩转 Second Life
- Second Life
- second life
- LSL学习笔记(2)
- LSL学习笔记(3)
- LSL学习笔记(4)
- 第二人生(Second Life)
- Second Life 体验
- 第二人生,Second Life
- 从second life说开去
- your second life,your imagination
- second life代码初研究
- Second Life 的数据拾零
- Second Life 的社群观点
- Second Life 的数据拾零
- h263中常用的几个关键字
- 60条经典网话,不经典的不发!
- 高级语言函数调用的反汇编分析
- 再来再来
- 万历年
- Second Life --- lsl script 学习(1)
- javascript正则表达式取汉字的长度,一个汉字占两个字节长度
- 任务
- Second Life --- lsl script 学习(2)
- 转贴 JS常用语句
- Sealing Classes in C++ ---- by Francis Xavier
- 一套.net窗体身份验证方案(解决了防止用户重复登陆,session超时等问题)
- c++资源之不完全导引
- 长文章分页