This page has been translated automatically.
编程
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
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
CIGI Client Plugin
Rendering-Related Classes
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

容器

容器是一种数据结构,这种结构内包含使用其它对象(对象元素)进行呈现的数据。容器元素的数量不受限制。

容器类型:

向量

Vector是一种序列式容器,这种容器代表具有灵活尺寸的数组。可使用向量元素的指数对其进行随机访问。请注意与C++数组一样,Unigine向量使用基于0的标准。

可使用下列指令创建固定尺寸的向量:

源代码 (UnigineScript)
int vector[10];
vector[3] = 30;
  • 如果要在向量上添加值,可使用append()容器函数。 在下面的例子中,在向量的最后添加一个新值:
    源代码 (UnigineScript)
    vector.append(20);
  • 当然也可以移除向量的元素。
    源代码 (UnigineScript)
    vector.remove(1); //移除第二个元素
  • 使用resize()函数更改向量的大小。也可扩大或减小向量大小。例如可将向量大小减少到5:
    源代码 (UnigineScript)
    vector.resize(5);
  • 要获取向量大小,使用size()函数。
    源代码 (UnigineScript)
    int size = vector.size();
  • 有时需要删除所有的向量元素。如果要将向量大小设置为0,需使用clear()函数。
    注意
    clear函数并不会删除向量。
    源代码 (UnigineScript)
    vector.clear();
  • 可通过升序的方式将向量进行分类。如果sort() 函数将接收到的向量作为参数,将通过第一个向量值对此参数进行分类。
    源代码 (UnigineScript)
    vector1[0] = ( 3, 2, 10, 8 );
    vector2[0] = ( 2, 1, 5, 7 );
    
    vector1.sort();
    vector1.sort(vector2);
  • 使用find()寻找某个元素的位置。如果未找到元素,下列示例中的函数会返回-1 。当然此函数可接收一个两个 参数。
    源代码 (UnigineScript)
    int id = vector.find(value);

请注意在声明某个空向量时,需要指定此向量的尺寸:

源代码 (UnigineScript)
int vector[0];

在初始化时可使用数值对向量进行填充。

源代码 (UnigineScript)
int array[5] = ( 1, -4, 2, 10, 73 );
注意
在UnigineScript中,向量条款列表被封装在简单的parentheses ()中而非在C++中使用的弯曲braces {} 。

可在一个向量中将几种不同类型的组件混合在一起。

源代码 (UnigineScript)
int a[6] = ( 0, 1, 2, vec3(1,2,3), -7.83, "end" );

注意通常使用参考点对向量进行操作,并不使用向量自身进行工作。这正是当将一种向量分配另一种向量时,仅需将参考点进行复制的原因。一旦向量遭到损坏,其参考点也不再起任何作用。

注意
向量中不能再包含其它的向量和贴图。如果需要使用此函数,使用由data/core/scripts/array.h文件提供的 Unigine::Vector and Unigine::Map类。

也可以为四个组件的向量编写索引。但对于这种类型的数组索引仅支持ivec4类型。会如下所示方式返回四个值:

  • 如果数值类型为整型长整型,返回ivec4
  • 如果数值类型为浮点型,返回vec4
  • 如果数值类型为双精度型,返回dvec4
(对于某种类型而言,会检查数值的第一个数值。)
源代码 (UnigineScript)
int array[0] = ( 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 );
ivec4 vector = array[ivec4( 0, 3, 5, 9 )];

// 向量组件为: ( 0, 30, 50, 90 )

贴图

贴图是一种会将values映射到 keys的类型。贴图元素使用键-值对进行呈现。

使用Keys(键)对贴图元素进行鉴别。每个键对应一个value(值)。但 key(键)value(值)可为不同的类型。 例如,下面的示例中,键为整数型而值为字符串型。:

源代码 (UnigineScript)
int map[] = ( 1 : "one", 2 : "two", 3 : "three", 4 : "four" );

可通过与创建向量的相同方式来创建贴图。

源代码 (UnigineScript)
int map[];
map["key"] = 20;
可使用容器函数更改贴图:
  • 使用append()为贴图添加键和值。可附加一个新键或键-值对到贴图上。
    注意
    如果已存在这样的键,接下来此键的值会被新值所取代。
    在下面的示例中,附件一个键-值对到贴图上:
    源代码 (UnigineScript)
    map.append("key",20);
  • 当然也可以使用key键移除元素。
    源代码 (UnigineScript)
    map.remove(key);
  • 要获取贴图的尺寸使用size()函数。
    源代码 (UnigineScript)
    int size = map.size();
  • 如果要删除所有的贴图元素,需使用clear()函数。
    注意
    clear函数并不会删除贴图。
    源代码 (UnigineScript)
    map.clear();
  • 要找到value元素的位置,需使用find()。如果未能找到值,下列实例中的函数会返回-1。当然此函数可接收一个两个参数。
    源代码 (UnigineScript)
    int id = map.find(value);

请注意在声明某个空贴图时,需要指定此贴图的尺寸:

源代码 (UnigineScript)
int map[];

在初始化时可使用数值对贴图进行填充。

注意
在UnigineScript中,向量条款列表被封装在简单的parentheses ()中而非在C++中使用的弯曲braces {} 。
源代码 (UnigineScript)
int map[] = ( "red" : 2, "black" : 5, "yellow" : 0 );

可在一副贴图中将几种不同类型的值混合在一起,但所有贴图的键必须具有相同的类型,因为此处应存在为所有键定义的比较运算符。

源代码 (UnigineScript)
int a[] = ( "red" : 1, "blue" : -1.82, "green" : vec3(1,2,3), "black" : "end" );

注意通常使用参考点对贴图进行操作,并不使用贴图自身进行工作。这正是当将一种贴图分配另一种贴图时,仅需将参考点进行复制的原因。一旦贴图遭到损坏,其参考点也不再起任何作用。

注意
贴图不应包含其它的向量和贴图。如果需要这种函数,使用由data/core/scripts/array.h文件提供的Unigine::VectorUnigine::Map文件。
最新更新: 2017-10-20
Build: ()