Call()方法
UnigineScript的应用范围仅限于实现与材质相关的逻辑(材质表达式,可编写脚本的材质,画笔材质)。 不要将UnigineScript用作应用程序逻辑的语言,请改用C#/C++,因为这些API是首选的。 无法保证UnigineScript中新引擎功能的可用性(超出其应用范围),因为当前的支持级别仅假设已解决关键问题。
variable call ( string function_name, variable arguments ) #
调用函数,将提供的函数名作为参数。上面的表达式等同于function_name(arguments)。
参数
- string function_name - 调用的函数名
- variable arguments - 函数参数
返回值
函数的执行结果。例子
call("log.message","%d %s\n",13,"some text");
// the result is: 13 some text
variable call ( int function_id, variable arguments ) #
通过函数ID调用函数,这种方式与直接调用函数的速度一样快。为获取此ID,使用get_function()。参数
- int function_id - 调用函数的ID。
- variable arguments - 函数参数。
返回值
函数执行结果。例子
void foo(int a) {
log.message("%d\n",a);
}
int id = get_function("foo",1);
call(id,3);
// 结果为: 3
class MyClass {
void print_me() {
log.message("MyClass::print_me() called\n");
}
void id_func(MyClass obj) {
obj.print_me();
}
};
MyClass m = new MyClass();
call(get_function("MyClass::id_func",1),m);
// 结果为:调用MyClass::print_me()
int id = get_function("MyClass::id_func",1);
m.call(id,m);
variable call ( string function_name, variable array ) #
调用函数,将提供的函数名作为参数。函数参数的数量可进行更改。参数
- string function_name - 调用的函数名。
- variable array - 函数参数。函数参数的数量可进行更改。
返回值
函数执行结果。例子
int args[] = ("%s\n","hello world");
call("log.message",args);
// 输出:hello world
variable call ( string method_name, variable arguments ) #
调用外部或用户自定义类方法。参数
- string method_name - 调用的方法名。
- variable arguments - 函数参数。
返回值
函数执行结果。例子
调用外部类的方法:
File file = new File("test.cpp","rb");
log.message("%d %s\n",file.call("isOpened"),file.call("getName"));
file.call("close"); // same as file.close();
delete file;
// 输出为: 1 test.cpp
class Foo {
void print(int a) {
log.message("Foo::print(): %d\n",a);
}
};
Foo foo = new Foo();
foo.print(1);
foo.call("print",2);
// Foo::print(): 1
// Foo::print(): 2
最新更新:
2023-12-19
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)