lua脚本实现demo实例 可在mac实现什么功能

1474人阅读
Lua脚本语言(1)
& & & & &作为一个游戏开发者,掌握至少一门脚本语言是一种必备的技能。Python、Ruby和Lua是目前最流行的几种脚本语言。相比之下,Python优点是具有比较多的支持库、工具、扩展模块,缺点是难以调试,难以跟其他语言整合;而Ruby优点是彻底的面向对象OOP语言,语法简单而易于掌握,不足之处是在游戏开发方面支持不够;作为本文要学习的目标语言---Lua是最快、占内存最少的,很容易跟其他语言整合,语法简单易学,缺点是Lua功能有限,只有配合其他语言才能发挥其价值。
&一、Lua语言简介
& & & & &Lua是一个免费的开源软件,可以免费用于科研及商业。Lua具有一个专家团队在维护和升级,其设计旨在项目中扩展功能,因此其内核小而稳定。在游戏开发中,Lua在用户界面、游戏数据管理、实时游戏事件管理、游戏人工智能、创建功能原型等方面具有强大的支持。Lua不能直接访问数据库,但可以通过整合其他语言组件来访问数据库;对于一些耗时要求更高效率的工作,一般交给更加底层的语言去完成,Lua只是起到整合的作用。通过使用Lua,可以让设计师分担一部分工作,让程序员专注于更加底层的开发任务。
二、Lua的安装
& & & & & 本文将用MacPorts来安装Lua。首先,打开终端,输入如下命令,将MacPots本地软件树升级到最新:
sudo port selfupdate
& & & & &然后输入如下命令:
port search lua& & & & 可以在MacPorts中搜到很多跟Lua相关的软件,如下图示:
& & & & & 显然,上图中蓝色部分的最后一项: lua @5.1.4 (lang)&powerful, lightweight programming language,这就是我们要安装的Lua。在终端输入如下命令查看lua的相关信息:
port info lua
& & & & 从上图可以看出Lua只有一个Universal版本,接着开始正式安装,在终端输入:
sudo port install lua +universal
& & & & &这样,我们就安装好Lua的开发环境了。下面开始我们Lua学习之旅的首个Lua程序-----Hello World!在终端输入&lua&命令,进入Lua命令编辑模式,按Control+D可以退出该模式。见下面代码:
bogon:~ ericli$ lua
Copyright (C)
Lua.org, PUC-Rio
& print(&Hello World!&)
Hello World!
& & & & &除了可以在命令行直接运行外,Lua代码也能保存在hellolua.lua 的文件中,然后通过在终端输入lua hellolua.lua运行文件中的Lua代码,新建一个名为hellolua.lua的空文件,保存到桌面上,然后在文件中输入如下Lua代码:
helloString = &Hello Lua!&
print(helloString)}
& 然后在终端进入hellolua.lua文件所在的桌面目录,输入lua&hellolua.lua,即成功运行!
bogon:~ ericli$ cd /Users/ericli/Desktop
bogon:Desktop ericli$ lua hellolua.lua
Hello Lua!
& & & &本文简单介绍了Lua以及用MacPorts安装Lua,并运行了我们的首个Lua程序,总结结束~~~~享受你自己的Lua学习旅程吧~~~~
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:103929次
排名:千里之外
原创:19篇
评论:23条
(1)(1)(1)(1)(4)(11)Lua嵌入iOS/Mac工程
首先我们需要编译lua环境,得到 lua工程的静态库
1.到 下载lua源码,版本任意
2.解压后 的res文件夹便是我们的需要的lua源码
3.新建一个静态库工程 ,打开xcode —& File —&New —&Project –&选择 Static Libary,并且工程名命名为lua
4.将2步骤中的res文件放到工程,Product-&Build便可以编出我们需要的 .a 包
5.新建一个iOS 工程
比如新建一个名字为 LuaOniOS 的工程。
6. 将iOS工程引用lua静态库工程。
因静态库工程是iOS工程的子工程,为管理方便,将其放到到LuaOniOS工程文件夹下
- 步骤1 将 静态库工程的 lua.xcodeproj 文件拖拽到 iOS 工程中
- 步骤2 设置LuaOniOS 的Build Settings –& Header Search Paths 添加一条 $(SRCROOT)/LuaOniOS/Lua/Lua
目的是搜索lua头文件时能够索引得到
- 步骤2 设置LuaOniOS 的Build Phases –&Link Binary With Libraries 添加 libLua.a 目的是包含子工程编译出来的静态库
7.在工程中新加一个 test.lua
print("hello lua on ios")
然后在ViewController.m中编写
#import "ViewController.h"
#import "lua.h"
#include "lauxlib.h"
#include "lualib.h"
@interface ViewController ()
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
lua_State * L = luaL_newstate();
luaL_openlibs(L);
NSString * scriptPath = [[NSBundle mainBundle]pathForResource:@"test" ofType:@"lua"];
error = luaL_dofile(L,[scriptPath cStringUsingEncoding:NSUTF8StringEncoding]);
if (error) {
printf("%s",lua_tostring(L, -1));
lua_close(L);
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
8.执行 控制台 可以看到
hello lua on ios
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:14582次
排名:千里之外
原创:38篇
(2)(2)(1)(2)(1)(1)(1)(1)(3)(4)(2)(3)(1)(3)(4)(5)(1)(1)2037人阅读
Cocos2d-x(29)
其实mac上搭建lua环境,google上大把资料,我只是整合一下,因为小弟搭建的时候确实碰到一些问题。
下载和安装lua:(转自)
1.&&下载最新版的lua-5.2.0&,然后解压&
2. 运行“终端”进入到该文件夹下&&,主要是cd 【文件夹名】
3.在“终端”输入&&&&make macosx&& (回车)
4.在“终端”输入&&&&make test&&(回车)
正常情况下会出现: src/lua -v
Lua 5.2.0 Copyright(C) Lua.org,PUC-Rio&
5.然后再输入“sudo make install”命令,会要求输入Password:&&&& 输入相应密码(你的密码),然后回车就自动安装了
待安装完成后可输入 lua -v,回车就会看到 :Lua 5.2.0&&Copyright (C)
Lua.org, PUC-Rio
OK ,已经安装成功!
这里使用sublime text2,google上面大把了
sublime text2上面选择:
&&cmd&: [&/usr/local/bin/lua&, &$file&], &
&&file_regex&: &^(...*?):([0-9]*):?([0-9]*)&, &
&&selector&: &source.lua& &
保存为Lua.sublime-build,然后Tools-Build System上就能选择lua来编译脚本了(如上图)
网上找到的大多数都是
&cmd&: [&lua&, &$file&]
可能我是用makefile来安装lua的,需要改一下路径
lua的编辑和运行环境已经搭建好了
新建一个xxx.lua文件,随便写个语句,选择lua为build system,按一下花+b,就能跑出来了。
至此,本新手学习lua的环境搭建好了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:633373次
积分:9616
积分:9616
排名:第1464名
原创:368篇
转载:79篇
评论:81条
(1)(1)(2)(1)(3)(9)(2)(1)(1)(4)(2)(1)(1)(1)(3)(4)(18)(3)(5)(6)(1)(7)(3)(4)(6)(15)(39)(27)(41)(34)(18)(3)(6)(6)(10)(9)(15)(48)(46)(26)(3)(6)(8)Lua的脚本编写在Mac OS X-osx,lua,交叉编译cross-compiling-CodeGo.net
Lua的脚本编写在Mac OS X
的Lua 5.0多年在Mac OS X中的通用二进制应用程序。 Lua脚本luac和脚本绑定在一起的应用程序。他们在老虎和豹,英特尔或PPC正常工作。
为了避免在I库的问题只是增加了Lua中的src树给我的Xcode项目原样,没有任何问题。
这是升级到一个更现代的版本的Lua,所以我代替我的源代码树与5.1.4。我重建做出的MacOSX(机上英特尔运行Leopard)。
脚本虎和豹,英特尔和PPC正常工作,一如既往。
然而,现在编译的脚本无法加载的PPC机器。
所以我重建luac与“ANSI”标志 CodeGo.net,和我的脚本。错误。同样,“通用”构建标志没有产生喜悦。
任何人都可以请告知我可以怎么做?
本文地址 :CodeGo.net/4987245/
-------------------------------------------------------------------------------------------------------------------------
1.Lua的“脚本是非常原始的字节码短头之后甩了出去。在字节码的特性的标题,但loader只验证当前平台具有的属性。
不幸的是,这种装在另一个平台上时,即使在很版本的Lua产生问题。当然,由不同版本的Lua,不能expect工作,并且由于Lua中的版本号被包含在字节码标题 CodeGo.net,装载它们的尝试将被捕获的核心。
答案很简单,只是脚本。如果脚本本身,你只需要担心可能的版本不匹配之间的Lua内核的构建您的应用程序,这是不是很难对付。
其实支持一个完整的字节码是不容易的。在该电子邮件,迈克鲍尔确定了以下问题:
字节序:根据需要交换的输出。sizeof(size_t),影响巨大的字符串常量:检查溢出时
降级。sizeof(int),影响 MAXARG_Bx和MAXARG_sBx:检查溢出时
降级。typeof(lua_Number):容易在C,但只有当主机和目标
按照计划生育的标准;精度
升级时的损失(极少数情况下);
发出警告时,非整数
降级到int32。
从所有的,我已经看到这个问题的邮件列表上,我看到了两个可能的可行的方法,假设你是不愿意考虑只出货Lua脚本。
优先是固定的字节顺序加载脚本。这真可谓是容易做的比你所expect的,因为它可以通过更换低级别的函数,读取脚本文件无芯本身来完成。事实上,它甚至可以在纯Lua中进行,通过提供自己的块读取函数lua_load()。这应该只要这个问题在你的平台是字节顺序的工作。
二是要修补的核心本身代表的脚本在所有平台上。这被描述为可以通过路易斯恩里克德菲格雷多:
我相信,以最好的途径
字节顺序或
第三方转储/ undump对。该
文件ldump.c和lundump.c是
彻底更换;它们输出
单一的,明确的,切入点。该
组块的格式不
神圣可言;您的任何格式,
只要ldump.c和lundump.c同意
关于它。 (例如,RICI湖
考虑写一个文本格式
个人而言,我不脚本render考虑,并完全避免了平台的可移植性问题。
编辑:我已经更新了我的头字节码得益于LHF的描述我没有看过这部分的Lua源着呢,我大概应该是这么张扬的是还是没有出现在标题前检查它。
这里是从lundump.c形成装载的头相匹配的运行平台的字节码的副本。它是用memcmp()为精确匹配,从文件头,因此任何不匹配将股票loader(luaU_undump())来拒绝该文件。
* make header
void luaU_header (char* h)
memcpy(h,LUA_SIGNATURE,sizeof(LUA_SIGNATURE)-1);
h+=sizeof(LUA_SIGNATURE)-1;
*h++=(char)LUAC_VERSION;
*h++=(char)LUAC_FORMAT;
*h++=(char)*(char*)&x;
/* endianness */
*h++=(char)sizeof(int);
*h++=(char)sizeof(size_t);
*h++=(char)sizeof(Instruction);
*h++=(char)sizeof(lua_Number);
*h++=(char)(((lua_Number)0.5)==0);
/* is lua_Number integral? */
如可以看到的,标题是12字节长,包含一个签名(4字节,“&esc&Lua“),版本和格式代码,一个标志字节,字节顺序,类型的大小int,size_t,Instruction和lua_Number和一个标志,指示是否lua_Number是一个整数类型。
这使得大多数平台的区别被抓,但并不试图抓住每一个途径,让平台可以不同。
我仍然站在上面提出:优先,来源;或第二,自定义ldump.c和lundump.c存储和负载的格式,具有附加注释的任何自定义格式应该重新定义标题的LUAC_FORMAT字节以便不与股票字节代码格式。
您可能需要支持不同的字节顺序打过补丁的字节码装载器。
看到这一点。
我会在RBerteig的帖子,但我显然没有足够的信誉尚未能如愿。在努力使LuaRPC加快速度和Lua 5.1.x,使之与嵌入式目标努力,我已经修改ldump.c和lundump.c来源,使其更加两者有点弹性。嵌入的Lua项目(eLua)已经有补丁,你可以找到Lua的名单上,但我更增添了几分,使lundump多一点友好的对不同的架构。还有提供支持,使您可以构建目标,从主机系统不同(见luac.c在目录下面的链接)。
如果你有兴趣在检查出的修改,您可以在eLua源代码库找到它们:
我把无人认领的修改是在任何情况下完美的还是工作。如果它并找到任何东西坏了,我会很高兴地听到它,以便它可以是固定的。
Lua的字节码是不可移植的。你应该出货源脚本与应用程序。
如果下载大小是一个问题,他们一般比字节码表单的短。
如果知识产权是一个问题,你的代码,并记住拆解的Lua字节码是什么,但很难。
如果负载是一个问题,你可以在本地安装脚本的来源。
í推测,在Intel框脚本。
编译脚本是不可移植的疯狂。如果你真的想脚本,你需要有两个版本的剧本:一个是英特尔和一个用于PPC的。您的应用程序将查询其程序它在脚本运行。
我没有足够的声誉,所以我必须提供这作为一个答案,而不是即使它不是一个合适的答案来问这个问题。对不起。
这里有一个LUA可供选择:
全面披露:我的作者和我知道它并不完美。反馈和鼓励(也可从上面的页面反馈页面)。
本文标题 :Lua的脚本编写在Mac OS X
本文地址 :CodeGo.net/4987245/
Copyright (C) 2014 CodeGo.net

我要回帖

更多关于 lua脚本实现demo实例 的文章

 

随机推荐