获取3d资源变成背包物品ui

在一些可以改造物品的游戏中,例如cod19、逃离塔科夫中的改枪系统
同一把枪,有上百个配件,不同的配件搭配就能达到上万种。
例如同样一把m4a1可以这样改造
image
但在设计的时候,不可能为每一种搭配设计一个ui
物品栏也不可能放3d的模型,会导致优化稀烂
所以,应该是获取3d物品的快照,放入ui物品栏中
文献参考:
http://docs.cocos.com/creator/manual/zh/asset/render-texture.html
http://docs.cocos.com/creator/manual/zh/concepts/scene/node-component.html?h=layer
给摄像机layer分组添加一个自定义分组


在主摄像机中,勾选我们的分组

在建立一个专门生成物品ui的摄像机
只允许看见我们的分组
image

控制ui生成的时候,只需要将3d物体的分组暂时改为自定义分组
let nods = find(“Sphere”);
nods.layer = 1;
这样就能使得物品生成摄像头能获取到物品
在将摄像机移动到物品正面进行获取摄像机内容

const sp = new SpriteFrame();
const renderTex = this._renderTex = new RenderTexture();
renderTex.reset({
width: 256,
height: 256,
});
this.camera.node.active = true;
let nodsx = find(“Cone”);
this.camera.targetTexture = renderTex;//和物品生成摄像机绑定
sp.texture = renderTex;
this.sprite.spriteFrame = sp;//和ui精灵进行绑定显示
最终效果
QQ录屏20221031035133 00_00_00-00_00_30

源码:3dbeibao.zip (1.6 MB)

你猜为什么塔科夫在舔包的时候加载枪械要200毫秒


因为要读取数据库的枪械配件改装信息吗?当然不是,枪械信息在开局的时候就已经读取放到你的内存了,才能在枪战的时候计算偏移量和伤害。那为什么他要加载一下?
因为他正在生成ui呀…
image

3赞

赞,感谢分享

小意思客气

看了一下代码,背包呢

重点是复杂3d组合物品生成ui,理解之后可以配合上一篇文章进行使用,如果需要的话我把两个知识点合并一下发出来

。。。那你顺便把背包润润色

OK好主意