USC解析器
独立解析器(因其脚本文件的扩展名,称为USC)可使Unigine脚本成为可执行程序(USC脚本),此程序直接在环境或命令行中得到运行。由于USC解析器独立进行工作,因此其为开发者提供一个简易的方式对功能进行扩展并解决具体或周期性任务,对于这些任务而言没有必要创建一个单独的可执行应用程序。
USC解析器的源码保存在 <UnigineSDK>/source/tools/Interpreter中。
Available Functionality可用函数性能#
USC解析器提供以下函数性能:
Core library | 可将USC解析器用于读/写文件,解析XML 文件,处理图像,执行数学计算等等,之所以能执行这些操作是因为USC解析器包含核心库。 |
---|---|
Static and skinned meshes | 可以加载并保存静态蒙皮网格,修改或清除这些网格的所有数据。还可以添加并设置网格面的转换,添加动画和骨骼(如果运用了蒙皮网格),更改位置,法向量及用于独立顶点的纹理坐标等等。 参看可用函数的 Mesh 类。 |
Paths | 可以加载,更改并保存路径。参看可用函数的 Path类。 |
Command line arguments | 可通过命令行将任意数量的参数传递给可执行脚本,然后在此脚本中处理这些参数。参看以下例子。 |
Logging | 如果有必要可以打印消息通知,警告及错误用来对脚本执行的进程进行追踪。 |
讲述的函数性能可用于 执行 USC脚本。
Command-Line Options命令行选项#
USC解析器可识别下列命令行选项:
- -define DEFINE_NAME - 将一个外部定义传递给(#DEFINE)USC解析器。
当USC脚本出现在命令提示符后(终结符)可指定此选项。
usc_x64.exe my_script.usc -define PRINT_MSG
Implementing USC Script执行USC脚本#
要执行通过USC解析器而得以运行的USC脚本(写在UnigineScript), 将main()函数作为进入点进行使用:
void main() {
// 才此处输入您的代码
}
接下来您应当使用*.usc扩展名将脚本保存起来并使用USC解析器进行运行 。
如果将命令行参数传递给脚本,应当为这些参数执行逻辑解析。否则,这些参数无法对脚本的行为产生任何影响。
可以解析除-define以外的任意参数。此为标准参数,该参数用来为USC解析器传递外部定义。
- int getNumArgs () - 返回命令行参数的数量。
- string getArg (int num) - 通过其数字,返回命令行参数。
Parsing Passed Command-Line Arguments解析通过的命令行参数#
下列实例演示如何将命令行参数值分配给脚本变量:
#!/usr/bin/env usc
// 声明变量
int value1 = 0;
int value2 = 0;
/*
*/
void main() {
// 解析参数
for(int i = 0; i < getNumArgs(); i++) {
// get the argument value
string arg = getArg(i);
// 处理所有所需参数
if(arg == "-set_value_1") {
if(i + 1 >= getNumArgs()) {
continue;
}
// 分配一个参数值给变量
value1 = int(getArg(++i));
continue;
}
if(arg == "-set_value_2") {
if(i + 1 >= getNumArgs()) {
continue;
}
// 分配一个参数值给变量
value2 = int(getArg(++i));
continue;
}
}
// 打印变量
log.message("value1: %d\nvalue2: %d\n",value1,value2);
}
usc_x64.exe my_script.usc -set_value_1 3 -set_value_2 7
value1: 3
value2: 7
Printing All Command-line Arguments打印所有命令行参数#
下列实例演示如何打印所有被传递给USC脚本的命令行参数:
#!/usr/bin/env usc
void main() {
forloop(int i = 0; getNumArgs()) {
log.message("Arg [%d]: %s\n",i,getArg(i));
}
}
usc_x64.exe my_script.usc -arg1 -arg2
Arg [0]: my_script.usc
Arg [1]: -arg1
Arg [2]: -arg2
See Also可参看#
要查看更多例子,请查看下列文件夹中的*.usc 脚本:
- <UnigineSDK>/utils/Upgrade
- <UnigineSDK>/source/tools/Interpreter/scripts (仅在Unigine SDK的完整源版本中可用)
Running USC Script运行USC脚本#
使用USC解析器运行USC脚本:
Running USC on Windows在Windows中运行USC#
要在Windows中运行USC脚本:
- 添加一个<UnigineSDK>/bin/usc_*.exe二进制可执行文件路径到环境变量中。取决于后缀名,其可为32位(_86)或64位的USC解析器调试(d) 或发布版本(无后缀名)。
可将*.usc 文件与<UnigineSDK>/bin/usc_*.exe二进制可执行文件联系起来。这样便可通过双击脚本的方式来运行脚本。
- 在命令提示符中,找到有*.usc文件的文件夹,然后使用所有所需参数通过USC解析器来运行此文件夹,例如:
C:\Windows\system32>d: D:\>cd my_project\usc_scripts D:\my_project\usc_scripts>usc_x64.exe my_script.usc -define USE_DEFINE -arg1 4
Running USC on Linux在Linux或 Mac OS X中运行USC #
要在Linux 或Mac OS X中运行USC 脚本,按以下步骤进行操作:
- 在脚本的第一行,指定以下内容:
#!/usr/bin/env usc
- 添加一个<UnigineSDK>/bin/usc_*二进制可执行文件路径到环境变量中。取决于后缀名,其可为32位(_86)或64位的USC解析器调试(d)或发布版本(无后缀名)。
请确保终结符已将环境变量的因素纳入考虑范围。
- 在终结符中,找到有*.usc文件的文件夹,然后使用所有所需参数通过USC解析器来运行此文件夹,例如:
在Linux中:
username@pc-name:~$ cd my_project/usc_script username@pc-name:~/my_project/usc_script$ usc_x64 my_script.usc
在 Mac OS X中:
mac-name:~ username$ cd ~/my_project/utils mac-name:usc_scripts username$ usc my_script.usc
最新更新:
2024-12-13
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)