GMS2.3中用"="对struct实例复制的话复制的是引用,如果想复制struct实例的值的话要自己手动实现。
脚本
//复制struct的内容到另一个struct实例中
function gml_struct_copy(new_str, old_str){
var num = variable_struct_names_count(old_str);
var name = variable_struct_get_names(old_str);
for(var i=0;i<num;i++)
{
variable_struct_set(new_str, name[i], variable_struct_get(old_str, name[i]));
}
return new_str;
}
示例
输出//调用示例
function Test() constructor{
num = 100;
};
test1 = new Test();
test2 = gml_struct_copy(new Test(), test1);
test1.num = 0;
show_message(test1);
show_message(test2);
{ num : 0 }
{ num : 100 }