游戏中使用LUA脚本语言的简介
程序员文章站
2024-03-17 23:57:58
...
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
我们知道脚本语言是解除硬编码,防止重编译的利器,可以这样说,任何大型游戏都有自己的脚本系统。
想要做出一款精品游戏,脚本语言也是我们需要掌握和运用的。
较流行的脚本语言有Python,LUA,Ruby等。
LUA有着轻量,高效,接口干净等特点,学起来很快,风靡全球的《魔兽争霸3:冰封王座》就是采用的LUA脚本语言。
以下的内容非我原创,前几天发现了这篇文章,觉得总结得不错,于是我觉得偷下懒,省得自己总结,直接转载过来供大家学习了。原文地址http://blog.csdn.net/b2b160/article/details/4799302,我将内容进行了排版,代码进行了高亮显示,更方便大家观看了。
是的,或许你认为这样就足够了,为什么还要使用Lua呢?
应用于“配置”这个目的,Lua提供给你更为强大,也更为灵活的表达方式,在上一种方式中,你无法根据某些条件来配置你的游戏,Lua提供给你灵活的表达方式,你可以类似于这样来配置你的游戏:
if player:is_dead() thendo_something()elsedo_else()end
更为重要的是,在你做了一些修改之后,完全不需要重新编译你的游戏代码。
通常,在游戏中你并不需要一个单独的解释器,你需要在游戏来运行解释器,下面,让我们来看看,如何在你的代码中运行解释器:
//这是lua所需的三个头文件//当然,你需要链接到正确的libextern "C"{#include "lua.h"#include "lauxlib.h"#include "lualib.h"}int main(int argc, char *argv[]){lua_State *L = lua_open();// 此处记住,当你使用的是5.1版本以上的Lua时,请修改以下两句为luaL_openlibs(L);luaopen_base(L); luaopen_io(L);const char *buf = "print('hello, world!')";// 记住,当你使用的是5.1版本以上的Lua时请使用luaL_dostring(L,buf);lua_dostring(buf);lua_close(L);return 0;}
程序输出:hello, world!
有时你需要执行一段字符串,有时你可能需要执行一个文件,当你需要执行一个文件时,你可以这么做:
lua_dofile(L, "test.lua");
看,非常简单吧。
取得信息
首先,让我来简单的解释一下Lua解释器的工作机制,Lua解释器自身维护一个运行时栈,通过这个运行时栈,Lua解释器向主机程序传递参数,所以我们可以这样来得到一个脚本变量的值: