[饥荒补遗]
-----------------------(一)-从一个物品说起-------------------------------- log—木头.
打开log.lua,映入眼帘的是一个资源表Asset和一个大的函数fn 资源表用来载入与这个物品有关的资源文件,它的每一个内容都是一个Asset类的实例,
Asset的构造函数定义在prefabs文件里.主要参数有两个,类型名,和文件. fn
函数是用来作为一个参数的,在构建一个新的prefads对象时,这个函数作为一个参数传入对象里.
每一个物品文件最终都会输出一个prefads对象,在prefablist.lua 里 定义了一个table(名称为
PREFABFILES)用来表明所有的物品文件的名称,在main.lua(212行) 里, ModSafeStartup
函数把所有的PREFABFILES表明的文件都载入,同样地,在mainfunction(684行)里,也有一个函数用来载入所有的物品文件.
综上所述,要创建一个新的物品,需要在物品描述文件里创建一个新的prefads对象,且要在PREFABFILES里添加文件名(PREFABFILES[#PREFABFILES]=物品文件名).
----------------
在一个物品的描述函数fn里,首先用函数CreateEntity创造一个实物对象(EntityScript,这个对象定义在EntityScript.lua里,里面定义了40多个方法,最好把这个文件看一遍,加深一下理解),且把对象登记在Ents
表里,并返回这个对象到局部变量inst里(这个变量在物品实例创造后就消失,不会影响其余的物品,还有就是可以省点内存,这就是局部变量的好处.别小看这个局部变量,假如没有用局部变量,饥荒运行过程中的内存使用至少要增加10倍以上)
. 有了这个物品实例后,就来操作这个物品,最终输出这个物品对象进行了(return inst)
首先增加了两个属性Transform(变化)和AnimState(特征声明),这两个函数的定义我找不到在哪,等我找到了再来解释. 之后把这个对象加入
MakeInventoryPhysics(物理对象清单),在物品inst里增加了一个physics对象,这个函数定义在standardcomponents.lua里,可以用来操控物理现象.
下面的三行用来改造特征属性,这个以后再说.
属性弄好了之后,开始增加成分了,这些成分定义在components文件夹里,我们的物品对象调用增加成分函数,在components目录找到对应的文件并假如到物品里,这个函数声明在文件.
EntityScript.lua里. 成分内容以后再说. 欧了,到现在,一个基本的物品就构建成功了,总结一下
饥荒程序调用main.lua文件,把PREFABFILES列表里所示的物品文件载入,每一个物品文件最终输出一个prefabs类的实例,每个prefabs
对象接受三个参数,物品名,物品函数fn,资源表.资源表的每一项都是asset类的实例.物品函数fn,输出一个物品实例对象,这个物品的实例的属性可以用对应的方法修改,重点是增加成分(components)
完了,一个物品文件就解析到这里,有不懂得就问.饥荒补遗【一】物品
原文:http://www.cnblogs.com/czfblog/p/jh1.html