game maker studio 2 GMS2.3-struct实例的复制

分类栏目:gamemaker教程

265

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 }