跳到主要内容
版本:master

Program

program的概念

GS中的program和object的关系类似于C++的class和class派生的对象, 一个gs文件可以通过new_object生成很多对象,但是始终只有一个program

program的创建

int compile_program(string file_name, mixed file_content = nil, bool force_recompile = false, bool compile_for_patch = false)

通过compile_program方法可以动态编译一个program,将文件读取导content里然后执行编译,动态编译之后可以实现对该program派生的object进行更新,例如我们的内置方法monkey.patch(program)就是通过这个原理来更新所有object

program例子简单讲解

如何获取一个对象的program

program ent_program = program.find_by_name(object_name);   // 通过对象名获取program
program ent_program = object.get_program(); // 通过对象获取program

获取这个对象包含的组件

ent_program.get_components();   // 包含组件列表

获取这个对象包含的变量

ent_program.get_object_vars();   // 包含变量列表

获取这个对象包含的函数

ent_program.get_functions();   // 包含函数列表

判断一个对象是否拥有Item组件:

program ent_program = program.find_by_name("common/Node.gs");

if (!ent_program)
{
error("对应对象不存在!");
return false;
}

if (!ent_program.get_component(Item))
{
error("It has no Item component!");
return false;
}
else
return true;

program常用的外部函数

下面列出program类型一些常用的外部函数以及用法。

1.
program object.get_program()
通过对象获取program
+
2.
program find_by_name(string name)
通过对象名获取program
+
3.
string get_name()
获取program管理的对象名称
+
4.
program get_component(string name)
获取该对象包含的指定组件
+
5.
array get_components()
获取该对象包含的所有组件
+
6.
array get_functions()
获取该对象包含的所有函数
+
7.
array get_object_vars()
获取该对象包含的所有函数
+
8.
array get_depend_programs()
获取该对象依赖的program列表
+
9.
bool has_same_ob_vars(program p)
两个program是否有相同的变量数量,相同的名称,相同的基础类型和子类型
+
10.
array get_depend_objects()
获取所有依赖这个program作为组件的object列表
+