如题,如何在creator项目的代码里动态的为精灵设置纹理呢?文档里说代码里动态加载的资源都需要放在resource中,但是如果resource中的资源太多,会导致包体变大,启动流程变慢,感觉陷入死循环了。。。
举个例子说:
我游戏内有200张卡牌,每张卡牌都对应一大一小两张头像,同时每个卡牌还都有一个spine,并且游戏总共有100种技能,300个道具图标。。。。这些相关的图片,我肯定是需要在代码中动态进行设置的,全部扔resouce里,又担心包体太大,不放里面又不知道怎么动态去加载使用?
resouce外的资源,如果你不使用,那打包的时候你是不会被打包进去的(动态加载的内容是无法检测是否被使用,所以默认是不使用)。
游戏里面没有的资源,应该如何动态加载?
所以cocoscreator生成的h5游戏怎么调用resource外部的图片和音频等资源呢。
远程的吗? 远程的使用远程加载。
如果是游戏里面的, 就放在resources里面, 或者新建一个assetbundle。
就是想把远程资源拷贝在生成的web-mobile/assets下面然后代码直接引用,不是远程下载网上的图片cc.assetManager.loadRemote和cc.loader.load(url, func);都试过了,好像不行
这样是不行的,必须放在resources里面, 或者新建一个assetbundle,, 然后重新构建发布
现在就是想攻克这个问题,这个问题完全没有解决方法吗?
感觉逻辑有问题吧?资源不想放在包里面,也不想远程下载,但是想直接使用?这逻辑说不通啊,程序不可能给你凭空生成资源
或者这样,不放包里,第一次打开时检测资源,没找到就远程下载保存,原生平台是可以这么做,h5不是很清楚
资源是其他平台给过来的
应该可以直接使用html的加载方式, 别使用creator的api。
问题解决了,访问静态资源直接用 cc.assetManager.loadRemote就可以了,注意资源路劲就行。
cc.assetManager.loadRemote(filePath, function (err, texture) {
if (err) {
console.error(err);
return;
}
var sframe = new cc.SpriteFrame(texture, new cc.Rect(0, 0, texture.width, texture.height), false, cc.Vec2.ZERO, new cc.Size(texture.width, texture.height / 2));
sprite.spriteFrame = sframe;
if (isSame) {
var rect = sprite.spriteFrame.getRect();
sprite.node.setContentSize(cc.size(rect.width, rect.height));
}
}.bind(this));
这个不也是加载resouces底下得资源么
噢,加载远程~, 这和你想要得不一样啊
用这个已经可以调用到外部的资源了。
你所说的外部资源是服务器的吧?