Screeps 扩展源原型以拥有内存对象

Screeps 扩展源原型以拥有内存对象,screeps,Screeps,我想储存一些关于我正在采集的能源的信息。理想情况下,我会使用mySource.memory.take,但Source没有内存属性 我可以实现如下内容: Source.prototype.memory = function() { return Memory.sources[this.id]; } 但是,我可以像其他游戏对象一样实现相同的属性,而不是方法吗?或者还有比这更好的方法吗?是的,你可以。您必须使用。以下是基于现有游戏代码的完整解决方案: Object.definePropert

我想储存一些关于我正在采集的能源的信息。理想情况下,我会使用
mySource.memory.take
,但Source没有内存属性

我可以实现如下内容:

Source.prototype.memory = function() {
    return Memory.sources[this.id];
}

但是,我可以像其他游戏对象一样实现相同的属性,而不是方法吗?或者还有比这更好的方法吗?

是的,你可以。您必须使用。以下是基于现有游戏代码的完整解决方案:

Object.defineProperty(Source.prototype,'memory'{
get:function(){
if(u.isUndefined(Memory.sources)){
Memory.sources={};
}
if(!\对象(内存源)){
返回未定义;
}
返回Memory.sources[this.id]=Memory.sources[this.id]|{};
},
设置:函数(值){
if(u.isUndefined(Memory.sources)){
Memory.sources={};
}
if(!\对象(内存源)){
抛出新错误('无法设置源内存');
}
Memory.sources[this.id]=值;
}
});