研究lua也有一段时间了,对lua也算是小有了解,对于lua的api可能和其他脚本语言不是 很相同,使用lua来编写,lua原生api都采用C语言开发的,理解这些api含义对于理解lua 语言设计的本身又起着至关重要的作用,故此在这里记录下,lua-api具体含义。
void lua_createtable(lua_State *L, int narr, int nrec)
创建一个新表,并将它放在栈顶,narr和nrec分别制定该table的array和hash部分的预分配
元素的数量。
无返回值
栈高度+1,栈顶元素是新的table。
#define lua_newtable(L) lua_createtable(L, 0, 0)
创建表的另一个api,常用这个api,上面的宏一定很清楚不多介绍。
Visual Studio对发部分开发人员的来说并不陌生,宇宙第一IDE,但是对于不同的开发人员, 对此IDE熟悉程度也是各部相同的,比如鄙人就是一个Unity前端的开发人员,虽然用VS有很长 一段时间,对于VS是如何管各个不同的项目,以及单个项目是如何管理却未曾深入理解,这里 就简单的介绍一下这款IDE是如何管理一个项目的。
Unity可以开发两种插件,Managed plugins和Native plugins。
Managed plugins 是托管式.NET插件,使用对应Unity的.NET版本进行开发。
Native plugins 平台相关的原生插件,可以访问操作系统的插件或者第三方的插件。
在Unity5之前,通过插件存放的目录来区分支持的目标平台;然而Unity5可以把插件放 在任何目录,通过Plugin Inspector设置相关属性就可以了,但为了兼容以前的版本, Unity5也会支持插件存放的目录,进行默认的插件设置。
规则如下:
文件夹 默认插件设置
Assets/**/Editor 只兼容Editor
Assets/**/Editor/(x86 or x86_64 or x64) 只兼容Editor,如果子文件夹存在,用于匹配目标CPU
Assets/Plugins/x86_64(or x64) x64兼容
Assets/Plugins/x86 x86兼容
Assets/Plugins/Android/(x86 or armeabi or armeabi-v7a) 只跟Android兼容,如果子文件夹存在,用于匹配目标CPU
Assets/Plugins/iOS 只跟iOS兼容
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输 出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 的所有的语句都写在一个叫:CMakeLists.txt 的文件中。当CMakeLists.txt文件确定后,可以用ccmake命 令对相关 的变量值进行配置。这个命令必须指向CMakeLists.txt所在的目录。配置完成之后,应用cmake 命令生成相应的makefile(在Unix like系统下)或者 project文件(指定用window下的相应编程工具编 译时)。
一般一个纯粹的Unity工程的目录结构由三个目录组成。
Assets: 工程中的所有脚本和资源存放位置,此目录需要通过svn(或git等)进行管理
ProjectSettings: 工程设置目录,例如哪些场景需要编译等,需要通过svn进行管理
Library:工程编译的中间文件,包括 Atlas, Shader, metadata等,Unity运行需要,不存在会自动生成,不需要通过svn进行管理
Bazel是Google的一个项目构建工具,目前还处于测试阶段,Bazel支持构建客户端和服务器软件, 包括客户端的应用iOS和Android,同时也提供了扩展框架去自定义自己的构建规则。
项目构建的工具已经非常的多,比如java的ant maven,C语言make等等,那么为什么还有使用 Bazel呢?原因是Bazel足够的强大,主要表现这几个方便: