34赞
你的资源释放实现方式很不错,现在它是我的了。。。
4赞
你的资源释放实现方式很不错,现在它是我的了。。。
1赞
mark~~
1赞
精准释放,赞
1赞
膜拜大佬
1赞
为了防止图片丢失, 在这儿手写了一份代码, 练习一下
// 2.x
cc.Component.prototype.addAutoReleaseAsset = function (_asset: cc.Asset) {
let oneTempAuto = this.node.getComponent(AutoReleaseAssets);
if (!cc.isValid(oneTempAuto)) {
oneTempAuto = this.node.addComponent(AutoReleaseAssets);
};
oneTempAuto.addAutoReleaseAsset(_asset);
};
cc.Component.prototype.addAutoReleaseAssets = function (_assets: cc.Asset[]) {
let moreTempAuto = this.node.getComponent(AutoReleaseAssets);
if (!cc.isValid(moreTempAuto)) {
moreTempAuto = this.node.addComponent(AutoReleaseAssets);
};
for (const _assetSelf of _assets) {
moreTempAuto.addAutoReleaseAsset(_assetSelf);
};
};
// AutoReleaseAssets
const { ccclass, menu, disallowMultiple } = cc._decorator;
@ccclass
@menu('资源管理/AutoReleaseAssets/自动释放资源')
@disallowMultiple
export default class AutoReleaseAssets extends cc.component {
private dynamicsAssets: cc.Asset[] = [];
// onLoad () {}
public addAutoReleaseAsset(_asset: cc.Asset) {
if (cc.isValid(_asset)) {
_asset.addRef();
this.dynamicsAssets.push(_asset);
// console.log("当前动态资源长度=="+this.dynamicsAssets.length);
}
};
onDestroy(): void {
// console.log("继承cc.Component拥有生命周期如果Node销毁就会顺带销毁这里");
for (let index = 0; index < this.dynamicsAssets.length; index++) {
if (cc.isValid(this.dynamicsAssets[index])) {
this.dynamicsAssets[index].decRef();
}
}
this.dynamicsAssets = [];
};
};
8赞
我试过了 很好用游戏里面dc降到1个了
2赞
好人一胎十个
2赞
那肯定养不起
1赞
和我处理的方式一样,只不过我用的不是Array而是Map
1赞
好人一胎生十个
1赞
战略Mark!
1赞
看楼上回复,加起来已经一胎二十个了
1赞
我选择看不见
1赞
我之前是继承到ui父类一个loadres函数,不过比较反感标题。什么最好,终极,到最后都会更新换代
3赞
震惊,国外一小哥程序员竟然写出神一样的代码。
1赞
啊。原来资源还需要释放的啊?
5赞
mark一下
1赞