编程
Fundamentals
Setting Up Development Environment
UnigineScript
High-Level Systems
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
Rendering-Related Classes

USC解析器

独立解析器(因其脚本文件的扩展名,称为USC)可使Unigine脚本成为可执行程序(USC脚本),此程序直接在环境或命令行中得到运行。由于USC解析器独立进行工作,因此其为开发者提供一个简易的方式对功能进行扩展并解决具体或周期性任务,对于这些任务而言没有必要创建一个单独的可执行应用程序。

USC解析器的源码保存在 <UnigineSDK>/source/tools/Interpreter中。

可用函数性能

USC解析器提供以下函数性能:

Core library 可将USC解析器用于读/写文件,解析XML 文件,处理图像,执行数学计算等等,之所以能执行这些操作是因为USC解析器包含核心库。
Static and skinned meshes 可以加载并保存静态蒙皮网格,修改或清除这些网格的所有数据。还可以添加并设置网格面的转换,添加动画和骨骼(如果运用了蒙皮网格),更改位置,法向量及用于独立顶点的纹理坐标等等。 参看可用函数的 Mesh 类。
Paths 可以加载,更改并保存路径。参看可用函数的 Path类。
Command line arguments 可通过命令行将任意数量的参数传递给可执行脚本,然后在此脚本中处理这些参数。参看以下例子。
Logging 如果有必要可以打印消息通知,警告及错误用来对脚本执行的进程进行追踪。

讲述的函数性能可用于 执行 USC脚本

命令行选项

USC解析器可识别下列命令行选项:

  • -define DEFINE_NAME - 将一个外部定义传递给(#DEFINE)USC解析器。
    注意
    当USC脚本出现在命令提示符后(终结符)可指定此选项。
例如:
命令行
usc_x64.exe my_script.usc -define PRINT_MSG

执行USC脚本

要执行通过USC解析器而得以运行的USC脚本(写在UnigineScript), 将main()函数作为进入点进行使用:

源代码 (UnigineScript)
void main() {
  // 才此处输入您的代码
}

接下来您应当使用*.usc扩展名将脚本保存起来并使用USC解析器进行运行

如果将命令行参数传递给脚本,应当为这些参数执行逻辑解析。否则,这些参数无法对脚本的行为产生任何影响。

注意
可以解析除-define以外的任意参数。此为标准参数,该参数用来为USC解析器传递外部定义。
要访问此参数,使用下列函数:
  • int getNumArgs () - 返回命令行参数的数量。
  • string getArg (int num) - 通过其数字,返回命令行参数。

解析通过的命令行参数

下列实例演示如何将命令行参数值分配给脚本变量:

源代码 (UnigineScript)
#!/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

打印所有命令行参数

下列实例演示如何打印所有被传递给USC脚本的命令行参数:

源代码 (UnigineScript)
#!/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
The my_script.usc脚本将会输出以下结果:
输出
Arg [0]: my_script.usc
Arg [1]: -arg1
Arg [2]: -arg2

可参看

要查看更多例子,请查看下列文件夹中的*.usc 脚本:

  • <UnigineSDK>/utils/Upgrade
  • <UnigineSDK>/source/tools/Interpreter/scripts (仅在Unigine SDK的完整源版本中可用)

运行USC脚本

使用USC解析器运行USC脚本:

在Windows中运行USC

要在Windows中运行USC脚本

  1. 添加一个<UnigineSDK>/bin/usc_*.exe二进制可执行文件路径到环境变量中。取决于后缀名,其可为32位(_86)或64位的USC解析器调试(d) 或发布版本(无后缀名)。
    注意
    可将*.usc 文件与<UnigineSDK>/bin/usc_*.exe二进制可执行文件联系起来。这样便可通过双击脚本的方式来运行脚本。
  2. 在命令提示符中,找到有*.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

在Linux或 Mac OS X中运行USC

要在Linux 或Mac OS X中运行USC 脚本,按以下步骤进行操作:

  1. 在脚本的第一行,指定以下内容:
    命令行
    #!/usr/bin/env usc
  2. 添加一个<UnigineSDK>/bin/usc_*二进制可执行文件路径到环境变量中。取决于后缀名,其可为32位(_86)或64位的USC解析器调试(d)或发布版本(无后缀名)。
    注意
    请确保终结符已将环境变量的因素纳入考虑范围。
  3. 在终结符中,找到有*.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
最新更新: 2017-07-03