UnrealScript struct是把一组变量一起塞入到一个新类型称为struct的超级变量的一种方法。UnrealScript structs和C语言中的结构体很像,它可以包含变量、数组及其它的结构体,但UnrealScript structs中不可以包含函数。
在实际问题中,一组数据往往具有不同的数据类型。例如, 在学生登记表中,姓名应为字符型;学号可为整型或字符型; 年龄应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一个数组来存放这一组数据。 因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,程序语言中给出了另一种构造数据类型——“结构”。
Unrealscript中结构体的语法
struct 结构体名
{
成员列表
//var ABag Bag;
};(注意这里有个分号)
struct 结构体名
{
成员列表
//var ABag Bag;
};(注意这里有个分号)
我们来试一下
class MyUSGame extends actor
placeable;
Struct Abag //首先我给自己定义个钱包,里面放些东西
{
var float money;
var string someting;
};
struct me //然后这是我本人
{
var string name;
var float height;
var ABag Bag; //然后我把包包放到身上去
};
var me my; //给个变量然后我们用它
function PostBeginPlay()
{
my.name="oraplayer";
my.height=1.7;
my.Bag.money=9999999;
my.Bag.someting="IDcard";
`log("this is my information:");
`log("my name is:"@my.name);
`log("my height is:"@my.height);
`log("my money:"@my.Bag.money);
`log("i have some stuffs:"@my.Bag.someting);
}
你可以像操作其它变量一样来操作Struct变量: 你可以赋值变量给它们、也可以传递它们给函数、而且您也可以访问它们的成员。
在Object类中定义了几个Structs,这些在整个的Unreal将一直会使用。你必须熟悉它们的操作,因为它们是脚本的基础构建模块。
class MyUSGame extends actor
placeable;
Struct Abag //首先我给自己定义个钱包,里面放些东西
{
var float money;
var string someting;
};
struct me //然后这是我本人
{
var string name;
var float height;
var ABag Bag; //然后我把包包放到身上去
};
var me my; //给个变量然后我们用它
function PostBeginPlay()
{
my.name="oraplayer";
my.height=1.7;
my.Bag.money=9999999;
my.Bag.someting="IDcard";
`log("this is my information:");
`log("my name is:"@my.name);
`log("my height is:"@my.height);
`log("my money:"@my.Bag.money);
`log("i have some stuffs:"@my.Bag.someting);
}
你可以像操作其它变量一样来操作Struct变量: 你可以赋值变量给它们、也可以传递它们给函数、而且您也可以访问它们的成员。
在Object类中定义了几个Structs,这些在整个的Unreal将一直会使用。你必须熟悉它们的操作,因为它们是脚本的基础构建模块。
Struct (结构体)修饰符
Structs也具有少量几个可以影响struct的所有实例的修饰符。修饰符在定义中位于 struct 关键字和结构体名称之间。
atomic
意味着这个struct要一直作为一个单独的单元进行序列化;如果在struct中的任何属性和它的默认值不同,那么struct中的所有元素都将被序列化。
atomicwhencooked
仅在使用已烘焙的包的数据时才应用'atomic'标志。
immutable
意味着这个结构体使用二进制序列化(减少磁盘空间占用并提高序列化性能);在没有增加包的版本的情况下从这个struct中增加/移除成员是不安全的。
immutablewhencooked
仅当使用已烘焙的包数据进行工作时才能应用'immutable'标志。
strictconfig
意味着当一个struct属性有'config/globalconfig'修饰符时,仅在这个结构体中标记为config/globalconfig的属性才能被从.ini文件中读取。(如果没有此标志,在struct中的所有属性都是可配置的)
Structs也具有少量几个可以影响struct的所有实例的修饰符。修饰符在定义中位于 struct 关键字和结构体名称之间。
atomic
意味着这个struct要一直作为一个单独的单元进行序列化;如果在struct中的任何属性和它的默认值不同,那么struct中的所有元素都将被序列化。
atomicwhencooked
仅在使用已烘焙的包的数据时才应用'atomic'标志。
immutable
意味着这个结构体使用二进制序列化(减少磁盘空间占用并提高序列化性能);在没有增加包的版本的情况下从这个struct中增加/移除成员是不安全的。
immutablewhencooked
仅当使用已烘焙的包数据进行工作时才能应用'immutable'标志。
strictconfig
意味着当一个struct属性有'config/globalconfig'修饰符时,仅在这个结构体中标记为config/globalconfig的属性才能被从.ini文件中读取。(如果没有此标志,在struct中的所有属性都是可配置的)