`
plmkome
  • 浏览: 43259 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

调用Lua 脚本

 
阅读更多

 引言

Vision 的 Lua 编辑工具组提供多种节省时间的功能,例如代码完成和预定义代码模板。 

重要说明: 请注意,我们采用 SWIG 封装 Lua 中的 C++ 类,所以所有对象的行为都类似指针 - 包括向量(Vision.hkvVec3)或颜色(Vision.VColorRef)。 因此,赋值(vector1 = vector2)所修改的是指针而非数据。 在这种情况下,您应当使用 clone() 而非赋值(vector1 = vector2:clone())。 ‘+’、‘-’、‘*’、‘/’等关键字可以放心使用,因为它们会为您生成一个新实例:vector1 = vector2 + vector3 

 代码插入

代码插入图标提供一份传递到 Lua 系统的可用事件类型的列表。 右键单击列表中的某条目,该函数将被放置到您的脚本的末尾。 

例如,选择 OnThink(self) 条目将生成如下 Lua 代码片段: 

function OnThink(self)	
 
end

 自动完成

输入代码时,当您在 Timer 等定义符号后方输入一个圆点或冒号,程序会显示自动完成对话框,包括对象所包含的函数。 

切换脚本编辑器工具栏上的自动完成图标可启用 / 关闭该功能。 

自动完成功能也可手动激活,方法为组合键 CTRL + SPACE,也可用 ESC 键关闭。 

 脚本缓存

脚本面板提供在 vForge 中启用 / 关闭脚本缓存的选项。 该选项仅影响编辑器中的行为。 脚本缓存默认为启用状态,也就是说,在每个脚本组件的实例化期间,将使用一份脚本资源的缓存版本(如可用)。 如果脚本缓存被关闭,在每个脚本组件的实例化期间,脚本文件将被检查,脚本资源将被重新载入,以防存在任何更改。 该行为模式的使用案例之一是,如果您在在编辑器中运行模式下也想编辑脚本,并为场景添加使用更新后脚本的脚本组件,则应该关闭缓存。 如果您的工作流不明确要求这一行为模式,请将脚本缓存保留为启用状态,因为其性能更佳(载入有大量脚本组件的场景时速度也更快)。 

 Lua 帮助

为协助您开发 Lua 脚本,您可以随时打开 Lua Scripting API,方法为选择脚本编辑工具栏中的 Lua 帮助图标,或按 F1 键:

该图标会打开一份标准帮助文档,全面涵盖 Vision Lua 类,另有使用中的命令的简单示例。 

提示: 如果您想获得有关某个具体命令的帮助,例如”OnCreate”、”SetPosition”等等,只需在脚本编辑器中选择文本并按 F1 键,帮助程序会立刻为您搜索关键词。

  Vision Lua 101

ScriptingAPI CHM 对于所有脚本命令都是一份宝贵的资源,但为帮助您在 Lua 学习过程中入门,有一些简单的命令和规则需要了解: 

信息: 示例项目中有一份脚本示例:/Data/Vision/Samples/Engine/Scripting/LuaScripting.project

     Self

self 变量用于引用该脚本所附的实体。 对于某个实体类型,我们可以使用如下脚本行。 

self:SetMesh("Models\\Warrior\\Warrior.model")
self:SetScaling(2)

这个小示例会把实体模型文件设给 Warrior,并将其统一缩放增加到 2。 

  调试打印

如果您需要测试变量内容或仅插入简单的追踪,打印到屏幕是快捷而简单的反馈方法。 您可使用如下命令: 
Debug:PrintLine("Hello World")
请使用双点技巧在 PrintLine 函数方法中合并字符串。
local numProps = self:GetNumProperties();
Debug:PrintLine("The entity has " .. numProps .. " prop(s)")
当您需要打印某个矢量的内容,请使用 tostring(var) 函数方法。
Debug:PrintLine("Setting a new property value...")
self:SetProperty("myProp", Vision.hkvVec3(1.2, 2.3, 3.4));
propVal = self:GetProperty("myProp");
Debug:PrintLine("The entity's new property value is: " .. tostring(propVal))	

  时间增量

为确保运动在不同帧率下保持恒速,您可以将速度因数乘以时间增量。 当前时间增量(从上次调用至今的时间)可从 Timer:GetTimeDiff() 函数方法返回。 

function OnThink(self)
    -- rotate entity over time
    local t = Timer:GetTimeDiff()
     self:IncOrientation(t*10, 0, 0)
end
转自 http://www.anarchy.cn/portal.php?mod=view&aid=48
分享到:
评论

相关推荐

    Lua与C/C++交互——C/C++调用Lua脚本

    本文将深入探讨如何在C/C++程序中调用Lua脚本,以实现强大的功能扩展和灵活的逻辑处理。Lua是一种轻量级的脚本语言,因其简洁、高效的语法和易于嵌入其他系统而受到广泛欢迎。 1. **Lua简介** Lua是一种动态类型的...

    Java调用Lua脚本(LuaJava使用、安装及Linux安装编译)

    Java调用Lua脚本是一种常见的跨语言交互技术,特别是在游戏开发和自动化脚本编写中。本文将详细介绍如何在Java环境中使用LuaJava库进行交互,并在Linux系统上进行安装和编译。 首先,让我们理解LuaJava。LuaJava是...

    delphi调用lua脚本的一个例子

    在本文中,我们将深入探讨如何在Delphi编程环境中调用Lua脚本,以实现更灵活的逻辑处理和功能扩展。Delphi是一款强大的Object Pascal集成开发环境(IDE),而Lua则是一种轻量级、高效的脚本语言,常用于游戏开发和...

    vb调用lua脚本案例,带mdlLua.bas模块

    标题中的“vb调用lua脚本案例,带mdlLua.bas模块”表明这是一个关于使用Visual Basic(VB)编程语言调用Lua脚本的实际应用实例。在这个案例中,开发者提供了一个名为`mdlLua.bas`的模块,这个模块是将Lua的原始C语言...

    Test_Lua.rar_VS2010_VS2010 Lua_VS2010调用LUA脚本基础_lua_lua脚本

    本文将详细介绍如何在VS2010环境下调用Lua脚本,构建一个基本的脚本调用框架模型。 首先,我们需要了解Lua的特性。Lua是一种轻量级的、解释型的、动态类型的脚本语言,它的设计目标是易于学习、使用和嵌入。Lua语法...

    lualib,c++调用lua脚本

    首先,`lualib`是一个为C++提供的库,它封装了Lua API,使得C++开发者能够更加方便地集成和调用Lua脚本。这个库通常包含了头文件和库文件,提供了一系列的接口供C++调用,如加载脚本、执行函数、传递参数等。 在C++...

    vc 程序调用lua脚本简单示例

    本示例“vc程序调用lua脚本简单示例”正好展示了如何在Visual C++ (vc++)环境中调用Lua脚本来实现这一目标。Lua是一种轻量级的、动态的、解释型的脚本语言,常用于游戏开发、配置文件解析和其他需要嵌入式脚本的语言...

    Windows下使用mingw编译实现c程序调用lua脚本测试代码源码

    在Windows操作系统中,开发C程序并调用Lua脚本是一个常见的需求,特别是在游戏开发、自动化脚本或者其他需要灵活脚本支持的场景。MinGW(Minimalist GNU for Windows)是一个为Windows提供GNU工具集的开源项目,它...

    C++调用Lua配置.

    本文将详细介绍如何在C++环境中调用Lua脚本,并通过一个具体的示例来演示这一过程。 #### 二、测试环境搭建 1. **环境准备**: - 操作系统:Windows 7 - IDE:Visual Studio 2005 - Lua版本:LuaForWindows_v...

    STM32F103 运行lua脚本例程.rar

    在本例程中,STM32F103被用于运行Lua脚本,这是一种轻量级的、可嵌入式的脚本语言,通常用于游戏开发、自动化任务和快速原型设计。 Lua的移植意味着将Lua解释器的源代码修改和编译,使其能在STM32F103的硬件平台上...

    c#调用脚本语言Lua——简单Demo

    c#调用脚本语言Lua——简单Demo 配置: 1. 下载c#下的Lua支持类库。下载地址:http://files.luaforge.net/releases/luainterface/luainterface/2.0.3 将(lua51.dll\LuaInterface.dll)引用自己的项目中。 2. 修改...

    SpringBoot通过redisTemplate调用lua脚本并打印调试信息到redis log(方法步骤详解)

    SpringBoot通过redisTemplate调用lua脚本并打印调试信息到redis log SpringBoot通过redisTemplate调用lua脚本并打印调试信息到redis log是指在SpringBoot应用程序中,通过redisTemplate调用lua脚本,并将调试信息...

    易语言lua的例子

    当你在易语言中编写程序时,可以引用这个库来调用Lua的函数,执行Lua脚本,实现动态脚本控制。 2. **lua静态.e** 和 **lua静态.ec**:这是易语言的源代码文件和编译后的执行文件,可能是用来演示如何静态链接Lua51....

    SpringBoot+Redis执行lua脚本的方法步骤

    SpringBoot+Redis 执行 Lua 脚本的方法步骤 以下是 SpringBoot+Redis 执行 Lua 脚本的方法步骤的知识点总结: 1. 背景:在开发中,我们需要一次性操作多个 Redis 命令,但是这些操作不具备原子性,而 Redis 的事务...

    Cocos2d-x 如何使用Lua脚本

    5. **调用Lua函数**:如果需要在Lua脚本中定义函数并从C++调用,可以使用`cocos2d::CCScriptEngineProtocol::callFunction("lua_function_name", args...)`,其中`lua_function_name`是Lua中的函数名,`args...`是...

    lua脚本源码包

    在这个源码包中,"lua_test"是一个用C++编写的测试程序,它展示了如何在C++项目中集成和调用Lua脚本。在Visual Studio 2008中,你可以打开这个项目,查看其源代码,理解如何设置Lua环境,如何加载和运行lua脚本,...

    CLua.net 5.3.5 c#调用 lua

    这个库使得C#应用程序能够方便地调用Lua脚本,同时也让Lua代码能够调用.NET Framework中的方法和对象,实现了C#与Lua之间的双向交互。版本5.3.5表明该库基于Lua 5.3.5版本进行封装。 使用CLua.net,你可以将Lua作为...

    Lua脚本在游戏引擎中的应用

    通过堆栈来实现引擎与Lua脚本之间的信息传递,这一中间层的设计允许引擎调用Lua脚本中定义的函数,同时也允许Lua脚本调用引擎中定义的功能函数。这种机制的一个显著优势是,可以在不改变引擎核心代码的前提下,增加...

    delphi7与lua相互调用的例子

    总结来说,"delphi7与lua相互调用的例子"是一个关于如何在Delphi 7应用程序中嵌入和调用Lua脚本的实例。它展示了如何利用DLL接口将这两种语言的强项结合在一起,为开发带来更多的可能性。通过深入理解这个示例,...

    Lua的使用入门之在C++程序中调用lua函数1

    通过这种方式,你可以灵活地在C++程序中调用Lua脚本来控制文本的显示,而无需更改C++代码。只需修改Lua中的`move`函数,就可以实现不同的文本移动策略,从而提高了代码的可维护性和扩展性。记得在使用完Lua环境后,...

Global site tag (gtag.js) - Google Analytics