zhaoke 发表于 2007-9-4 03:46:13

介绍林登脚本语言

介绍林登脚本语言

http://blog.zhaoke.com/162.html


在第二人生虚拟世界中使用林登脚本语言向物体增加行为和交互式的功能.

使用林登脚本语言系列文章包括:
1. 介绍林登脚本语言:
2. 深入林登脚本语言:

常用缩写词

LSL: 林登脚本语言
SL: 第二人生
in-world: 在线世界
HUD: 状态显示工具
Teleport: 传送

使用林登脚本语言系列文章的所有内容均翻译自第二人生世界官方向导的第八章节
注: 我对文章中的少数内容和代码进行了修改和删除, 因为最新的脚本编辑工具跟作者写本篇文章的时候有所不同.
如果你有什么建议或者意见, 欢迎发送到
http://blog.zhaoke.com/162.html

您可以在第二人生虚拟世界中使用林登脚本语言向物体增加行为和交互式的功能. 脚本语言是编程语言的一种, 所以要学好LSL, 您需要学习编程知识. 不用担心, 本文和网站及第二人生在线世界(in-world)提供了许多资源, 你将会很快学会脚本语言的基础知识. 在第二人生世界中娱乐, 您并不需要会写脚本, 但是脚本会带来很多魔术般的效果和乐趣, 比如交通工具, 枪炮, HTTP请求等.

本篇主要帮助你学会创建您的第一个LSL脚本, 内容包含基本的LSL语法和更多的高级功能, 如何向SL中的物体增加感知和通信功能? 如何把含有脚本的物体移动到你的屏幕上, 然后作为一个HUD设备? 最后, 如果你需要学习更多的知识, 我们提供了有关林登脚本语言的更多资源.

LSL的来源

LSL来自于哪里? 最初第二人生叫做”林登世界(LindenWorld), 林登世界中只存在一些小的飞船和飞行眼球(相当于现在的虚拟化身), 当时还没有脚本语言, 在线世界中每一个物体都是通过静态工具创建的. 这里感谢刚体动态技术, 因此第二人生中的物体有点像现实当中的物体, 物体之间可以相互碰撞, 物体在重力的作用下从空中掉到地上, 等等. 虽然我们可以创建不少的物体, 但是还是有很多的东西没法制做出来.

举个例子, 搭乘飞机. 短短几年后, 我们将能够在真实世界中模拟翅膀的飞行, 解决了复杂的方程问题, 比如模拟飞行机翼的交互作用, 气体紊乱, 流体, 柏努利定理, 等等. 然而计算机仍然还无法处理所有的这些任务. 所以完全模拟是不现实的. 居民通过LSL创建的内容还无法全都在SL的物理系统上模拟出来.

从技术角度而言, 你现在使用的林登脚本语言是第二版. 2002年8月增加到林登世界的是第一版. 第二人生世界中只有很少的居民(当时是测试用户)用过第一版的林登脚本语言, 当前的第二版语言是第一版的简化版本, 增加了很多功能, 第二版比第一版更强大和更容易使用. 我们很高兴你没有使用过第一版本的语言.

创建您的第一个脚本

现在你可以开始准备第一步了. 打开您的第二人生世界, 传送到一个您可以创建物体的地方. 比如沙盒(sandbox)或者您自己拥有的土地. 首先在土地上创建并编辑一个盒子, 然后选择内容窗口, 点击新脚本(New Script)按钮. 屏幕底部将会弹出一个脚本运行提示”Hello, Avatar!”(见图8.1). 接下来我们将分析整个脚本, 现在如果你关闭构建窗口, 然后右击盒子, 脚本将回响一个”Touched.(已触摸)”的提示.

祝贺! 够简单吧! 你已经成功在第二人生世界中创建了您的第一个脚本. 我们来回顾一下您都做了哪些工作. 右击盒子, 然后从环行菜单中选择Edit(编辑). 然后再点击Content(内容). 盒子现在将包含一个脚本, 叫做New Script(新脚本). 双击新脚本将会重新打开脚本编辑窗口. 现在我们能够查看脚本的内容:

default
{
state_entry()
{
llSay(0, “Hello, Avatar!”);
}

touch_start(integer total_number)
{
llSay(0, “Touched.”);
}
}

如果您编写过程序, 你会觉得很熟悉其中的几个关键字, 下面我来逐字分析.

关键字default的作用是指示LSL程序从这里开始执行. 接下来的内容(深入篇), 你将会了解到LSL程序可有多个状态, 而现在你只需要知道每一个LSL程序至少需要一个状态default.

http://blog.zhaoke.com/data/2007/0904/hw.gif

图8.1: “Hello, Avatar!”脚本

每对花括号{和}都缺省封装了事件处理器 — 在上面实例中是state_entry和touch_star. 当程序执行到这里的时候,state_entry事件被触发. 所以在我们提供的实例中, 当你点击保存, 然后脚本被上传到模拟器程序中, 而且脚本被附加到目标物体上. LSL程序当执行到default的时候. 这将会触发state_entry事件, 然后任何位于state_entry中的代码都将被执行.

在我们的实例中, 唯一的代码是库函数LLSay. LLSay允许一个脚本发送聊天文本. 比如类似一个虚拟化身进入到一个既定的通道(Channel)中. Channel 0表示所有的虚拟化身都能听到发送出的信息, 所以当在channel 0说”Hello, Avatar!”, 脚本将会确保附近的所有虚拟化身都能够听到. LLSay位于左花括号后边,内容包括整数0和字符串Hello, Avatar. 接下来我们将讨论更多有关参数的信息.

当然, 如果您忘记了LLSay的参数, 这时候该怎么办呢? 一个办法是访问LSL的wiki网页或者在Google上搜索”llSay”. 幸运的是, 这里有一个更加简单的办法, 你只需要在脚本编辑窗口把你的光标移动到单词”llSay”上面. 然后会自动弹出一个提示信息, 告诉你LLSay的语法, 看下面:

http://blog.zhaoke.com/data/2007/0904/hw1.gif

llSay(integer channel, string msg)
Say msg on channel

第二个事件处理器是touch_start. 当我们点击盒子的时候开始调用touch_start. 然后你会收到一个回响信息”Touched(已触摸)”, 这就是touch_start事件处理器的工作. touch_start事件处理器中的唯一代码是llSay库函数, 刚才我们已经介绍过了.

http://blog.zhaoke.com/data/2007/0904/hw2.gif

现在我们来创建自己的脚本. 如果你没有打开脚本编辑器, 你可以通过右击盒子, 然后从环行菜单中选择Edit(编辑). 然后再点击Content(内容). 然后点击窗口中的New Script可以编辑脚本的内容. 现在我们再回到前面, 修改”Hello, Avatar!”中的”Avatar”为你的名字. 比如修改成我的名字, “Hello, Cory!”. 一旦你修改了代码, 请确认没有错误后, 点击Save按钮编译和保存脚本.

你可以在脚本编辑器的底端看到同样的信息序列”Compile successful, saving…(编译成功, 保存中…)”, 然后”Save complete.(保存结束.)” 然后盒子会回响您的名字信息. 到这里脚本已经创建成功. 但是如果你想返回到”Hello, Avatar!”? 幸运的是, 文本编辑器支持取消(undo)和重做(redo)功能. 选择文本编辑器窗口, 按下Control-Z取消你的修改. 你将会看到你的名字被”Avatar”取代. 如果你想重做刚才的改变, 使用Control-Y.

记住当你点击Save(保存)之前, 您对脚本的修改只在文本编辑器中有效, 并没有实际上传到第二人生(模拟器程序)当中. 当你在修改非常复杂或者重要的脚本时候, 最好的办法是先在第二人生世界之外创建好文本, 然后再把代码粘贴到第二人生中. 这样的话, 如果脚本意外丢失, 你还有一份拷贝(在你的计算机上). LSL Wiki网页提供了一个外部编辑器程序列表, 它们都能显示LSL的语法.

另外重要地方是: 一旦你添加脚本到一个物体当中, 脚本只存在于物体中, 甚至是你derez(封装)和rez(释放)到你的物品仓库. 如果你想彻底删除掉脚本, 最好的办法是从物体中删除代码.

为了更加完整地理解您输入的文本与在线世界中联系, 你需要更加深入地了解LSL语言.

[ 本帖最后由 zhaoke 于 2007-9-4 03:50 编辑 ]

亦幻 发表于 2008-7-6 12:17:01

太棒了,我也玩SL,你是哪个岛的??
页: [1]
查看完整版本: 介绍林登脚本语言