cocos creator 游戏UI背包实现

别再手动拖了!CocosCreator 3.x 里用ScrollView组件5分钟搞定一个可滑动的背包界面 本文详细介绍了在CocosCreator 3.x中使用ScrollView组件快速实现可滑动背包界面的高阶技巧。从ScrollView的核心架构解析到网格布局配置,再到动态加载与性能优化,帮助开发者轻松打造丝滑流畅的背包系统。特别适合游戏开发中需要处理大量物品展示的场景。 阅读详情

首先创建一个精灵节点使用背景图 然后添加关闭 整理 使用按钮 滚动视图 将图标,格子和整个界面作为预制体 加载后 用instantiate()函数生成多个格子 然后把图标贴上去

效果图:
在这里插入图片描述

cc.Class({
    extends: cc.Component,

    properties: {
        scroll: cc.ScrollView,//添加属性绑定滚动视图
    },

    onClickButton(event, data) {//按钮点击事件  
        if (data == "close") {
            this.node.destroy();
        }
        else if (data == "reset") {
        } else if (data == "use") {
        }
    },

    onClickItem(node) {// 点击物品的选中操作
        if (this.old) { //this.old 为下面保存的节点
            this.old.getChildByName("select").active = false
        }
        node.getChildByName("select").active = true;
        this.old = node;
    },

    refreshItem(List) {//  List  接收的参数
        //如果预制体this.bagItemPrefab 没加载完  或者图标this.bagIcon 没有16张   
        if (!this.bagItemPrefab || Object.keys(this.bagIcon).length < 16) {
            setTimeout(   // 则每100毫秒调用一次this.refreshItem(List);
                () => {
                    this.refreshItem(List);
                },
                100,
            )
            return;
        }
        let content = this.scroll.content;// 获取scroll的子节点content
        content.removeAllChildren();//删除content的所有子节点
        for (let i = 0; i < List.length; i++) {
            let node = cc.instantiate(this.bagItemPrefab);//克隆物品存放的格子
            content.addChild(node);//增加到content的子节点中
            //获取node的子节点更换其中的图标
            node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = this.bagIcon[List[i]];
            node.getChildByName("select").active = false;//选中特效一开始为隐藏
            node.on(    //监听点击事件  触发时调用函数this.onClickItem(node);
                cc.Node.EventType.TOUCH_START,
                () => {
                    this.onClickItem(node);
                },
            )
        }
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad() {
        cc.loader.loadRes(//加载物品格
            "prefab/bagItem",//路径
            cc.Prefab,//类型
            (err, data) => {
                if (err) {
                    return;
                }
                this.bagItemPrefab = data;//data为加载的预制体
            }
        )
        this.bagIcon = {};//创建一个对象   图标以键值对的方式存在对象中
        for (let i = 1; i <= 16; i++) {//加载物品图标
            cc.loader.loadRes(
                "icon/" + (100 + i),
                cc.SpriteFrame,
                (err, data) => {
                    if (err) {
                        return;
                    }
                    this.bagIcon[100 + i] = data;
                }
            )
        }
    },

    start() {
        this.refreshItem([101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 105, 106, 107, 108, 101, 102, 103, 104, 105, 106, 107, 108,]);
    },

    // update (dt) {},
});
背包系统 开发工具CocosCreator RPG游戏背包系统 背包系统是基于一个道具表上的制作词条来完成的道具的添加和管理的,也很大程度上的通过一个预制件和CSV道具表形成一个一对多的效果不需要在代码中反复添加归类, 通过一个数组将对应的词条进行切割代码如下:prop:function(){ var that = this cc.loader.loadRes("csv/ 阅读详情

相关推荐

CocosCreator3.8研究笔记(十一)CocosCreator Prefab(预制件)理解

将当前预制件实例的数据还原为预制件资源中的数据,其中名字、位置和旋转不会被还原为预制件资源中的数据。为什么要使用Prefab?上增加一条删除的组件的数据,它的数据存储在预制件的实例下,所以不会影响关联的预制件资源的数据。场景中的预制件实例对象,数据源来自预制件资源的反序列化,所以它的数据默认同步了预制件资源。标志,它的数据存储在预制件的实例下,所以不会影响关联的预制件资源的数据。标志,它的数据存储在预制件的实例下,不会影响关联的预制件资源的数据。中的预制件资源,是预制件的序列化文件。

w风雨无阻w的专栏 3459

cocos2d-x 背包系统

一个测试scrollview和sqlite数据库用的小型背包系统。没测试过是否可以跑在手机上。包含类文件,资源。如需运行请自建工程然后导入。即使是可堆叠的物品实际上也是有不同属性的,但是还没有做显示处理,所以会发现血瓶在没有达到数量上限时也会占用新的格子。另外,美术工作由本程序员手绘,所以不要太在意O(∩_∩)O~

Cocos Creator跨平台游戏开发实战:滑动与生存机制实现

跨平台游戏开发是现代游戏工程实践中的重要方向,其核心原理在于通过统一的代码库适配不同硬件与操作系统,从而大幅提升开发效率并降低维护成本。Cocos Creator作为一款成熟的跨平台游戏引擎,其技术价值在于提供了从渲染、输入到资源管理的完整解决方案,尤其擅长2D游戏的深度优化。在应用场景上,它广泛适用于需要快速迭代、多端发布的休闲游戏和中小型项目。本文以“滑动与生存”这一具体游戏原型为例,深入探讨了如何利用Cocos Creator的组件化开发模式,封装统一的输入管理系统以处理多端适配,并实现包含状态机、碰

weixin_30915275的博客 454

cocos creator 背包bag制作

在这一教程中,我们来看下怎么样合理地在背包栏中显示各种物品或道具。我们主要考虑以下几点: 应该在配置文件中编写所有道具的属性,包括名称、介绍、图片路径等等,方便后期添加或删除道具。 将各个道具预制添加到挂有GridLayout组件的节点上。 考虑GridLayout相关属性的屏幕适配。 运行效果如下: Cocos Creator版本:2.2.0 公号"All Codes"后台回复"背包栏",获取该项目完整文件。 创建节点 在层级管理器中创建以下节点: bg为白色背景,sprite类型

LANGZI7758521的专栏 3575

Cocos Creator响应式UI开发:基于Vue 3原理实现数据驱动视图

响应式编程是现代前端开发的核心范式,它通过数据绑定机制自动同步数据与视图状态。其原理基于依赖追踪,当数据变化时自动触发相关视图更新,从而将开发者从繁琐的手动DOM操作中解放出来。这种模式在工程实践中的价值在于极大提升了代码可维护性和开发效率,尤其适合状态复杂的交互界面。在游戏开发领域,Cocos Creator的UI系统同样面临数据和界面同步的挑战。本文通过借鉴Vue 3的reactive系统核心思想,构建了一个轻量级响应式数据层,实现了游戏状态与UI组件的自动绑定。该系统采用Proxy进行依赖收集,并结合

weixin_34302798的博客 415

Cocos Creator拖拽排序列表实现:核心原理与工程细节

拖拽排序是游戏UI中常见的交互需求,涉及触摸事件处理、节点坐标计算和动画调度等基础技术。其原理是通过监听触摸事件,实时比较节点位置来判定插入顺序,并利用补间动画实现平滑让位。在Cocos Creator中,基于节点坐标而非物理引擎的实现方式,能有效降低性能开销,适配移动端。该技术广泛应用于背包整理、任务队列调整和卡牌布阵等场景。本文深入剖析拖拽排序列表的完整实现链路,涵盖插入位置判定、让位动画、数据回写及与ScrollView的手势共存等关键细节,帮助开发者避开常见陷阱。

weixin_29000991的博客 153

cocos课堂(三)--UI控件系统(背包)

常用ui组件

qq_54350870的博客 1177

Cocos Creator 拖拽排序组件实现:从触摸事件到滚动联动

拖拽排序是游戏背包、商店货架等 UI 场景中的高频交互,但在 Cocos Creator 里,开发者常被插件兼容性和真机适配问题困扰。本文将从一个不依赖第三方插件的组件方案出发,剖析拖拽排序的核心原理:通过触摸事件接管手势、以数据数组驱动视觉顺序、用位移动画平滑让位,并解决滚动列表与拖拽手势的冲突。该组件基于节点体系与 UITransform 命中检测实现,可作为通用模块嵌入任意游戏 UI,既保留 ScrollView 的滚动能力,又能在数据动态变化时稳定排序。无论是新手还是熟手,都能从这套工程实践中获得可

weixin_29016315的博客 322

客户端-背包列表优化

Date: 2022-03-25 问题分析: 当加载背包cell节点数量过大时,出现的加载和滑动卡顿 解决方案: 降低drawcall 使用自动图集或者TexturePacker把碎图打包, 多个渲染纹理合并, 多个渲染指令一次执行 文字不使用系统文字,可以使用图片字替代,并且合图 尽量不要在cell组件内使用Mask裁剪, 可以将Mask放在外部, 例如在ScrollView上单独一层, 同步cell组件的位置, 避免打断自动合批 分帧异步加载, 可以使用协程或者定时器等异步加载节点 节点cel

u010001648的博客 975

Cocos Creator拖拽排序实战:数据驱动方案与ScrollView兼容技巧

在游戏开发与UI交互中,拖拽排序是背包整理、排行榜自定义等场景的高频需求。其核心原理是将物理拖拽动作映射为数据序列的重新排列,而非直接操作节点坐标。通过数据驱动的方式,可天然规避与ScrollView的触摸冲突,保证滚动与拖拽语义分离,同时降低数据同步成本。本文从触摸事件捕获、坐标转换(getUIDelta)、中心点距离碰撞检测等关键技术点出发,结合Cocos Creator 3.x实践,分享一套稳定易维护的排序方案,并给出性能优化与手势冲突的排查思路。

weixin_29009339的博客 301

Cocos Creator 3.x拖拽排序列表:ScrollView联动与坐标换算实战

在游戏和App界面开发中,列表项的拖拽排序是常见的交互需求。实现这一功能的关键在于理解UI坐标系与触摸事件的底层逻辑。Cocos Creator 3.x提供了UITransform的convertToNodeSpaceAR方法,可便捷地将世界坐标转换为节点本地坐标,从而准确判断手指位置。结合ScrollView的滚动机制,通过监听触摸事件并处理边界自动滚动,即可实现流畅的拖拽体验。本文从坐标换算原理出发,解析了监听器搭建、节点排序、滚动联动等核心环节,并针对常见的层级错乱、事件冲突等翻车现场给出解决方案,适

weixin_29011993的博客 249

麒麟子Cocos Creator实用技巧八:回合战棋类RPG战斗效果

HELLO,大家好,我是麒麟子。作为Cocos社区高产用户,今天又给大家带来了一个看起来很酷,但实际上大多数人用不到的DEMO。 不知道大家是否记得梦幻西游、问道、英雄无敌、仙剑奇侠传、神仙道、神曲OL。 不知道大家是否最近在玩自走棋(哎哟,不错哟,最近特别火) 然而,他们从技术上讲,没有本质的区别,他们的战斗都是回合制。 回合制的游戏就像棋牌一样,每一个回合,同一时间,只有一个人能...

15 年专注游戏引擎与游戏开发,分享实用方案、经验与干货教程! 1万+

Cocos Creator拖拽排序列表实现:从触摸事件到数据回写的完整指南

拖拽排序是游戏开发中常见的交互需求,涉及触摸事件处理、坐标换算、索引判定与数据同步等核心技术。其原理是通过监听触摸事件,实时计算拖拽项位置并动态调整列表顺序,最终将新顺序回写至业务数据。在Cocos Creator中,合理封装拖拽排序组件能显著提升开发效率与交互体验,适用于背包整理、卡组编排、任务队列等场景。本文深入解析拖拽排序列表的实现细节,涵盖触摸事件、坐标换算、索引判定与数据回写等关键环节,并提供避坑指南与二次开发建议,帮助开发者快速构建可复用的拖拽排序组件。

weixin_29015051的博客 244

在cocos creator中快速开发背包,排行榜,通行证,商城等虚拟列表

详细介绍了在cocos creator如何快速开发诸如商城,排行榜,背包这样的虚拟列表,并给出具体详细的步骤和代码

qq_45663725的博客 822

Cocos Creator 拖拽排序列表组件:数据驱动与 ScrollView 冲突解决方案

在游戏 UI 开发中,列表拖拽排序是背包、技能栏、关卡选择等场景的高频交互需求。其核心难点不在于动画表现,而在于触摸状态管理、坐标换算、重排判据以及与 ScrollView 滚动的冲突处理。数据驱动架构将顺序依据从节点层级转移到数据数组,彻底规避了 Layout 重排干扰、撤销困难等问题,配合中心点过界判据和状态机设计,可构建稳定、可复用的排序逻辑。从通用列表交互原理切入,梳理拖拽排序组件的工程实现思路,并给出适配 Cocos Creator 的完整方案,帮助开发者高效解决实际项目中的列表排序与滚动冲突难题

weixin_29474431的博客 2

Cocos Creator拖拽排序列表:数据驱动与稳定落点判定

在游戏和工具类应用的界面设计中,拖拽排序是一种常见且重要的交互方式,它允许用户通过手指或鼠标直接调整列表项的顺序。实现一个稳定可靠的拖拽排序组件,不仅需要处理触摸事件的响应与坐标转换,更要确保数据顺序与视觉表现始终同步。本文从数据驱动的思路出发,讲解如何以数组作为唯一数据源,通过目标下标计算与列表刷新机制,避免传统坐标暴改带来的错乱问题。结合Cocos Creator引擎,介绍ScrollView、代理层、落点判定及回弹动画的具体实践,并针对多分辨率、节点复用、触摸冲突等高频踩坑点给出解决方案。最终帮助开发

weixin_33095355的博客 104

cocos creator 3.x 手搓背包拖拽装备

游戏背包 需要手动 拖拽游戏装备到 装备卡槽中,看了下网上资料很少。手搓了一个下午搞定,现在来记录下实现步骤;

唐僧的专栏 2612

Cocos Creator 可直接拖动调整顺序的列表组件,带滚动视图兼容和实时位置反馈

一套即插即用的 Cocos Creator 列表拖拽排序解决方案,专为游戏内背包、技能栏、任务队列等动态排序场景设计。支持鼠标和触摸操作,在普通节点列表或嵌套 Scrollview 的长列表中均可正常工作。拖拽过程中自动高亮插入位置,实时显示目标索引,松手后立即更新节点顺序与底层数据数组,确保 UI 与逻辑完全同步。所有代码用 TypeScript 编写,结构清晰:核心逻辑封装在 DragSortManager 中,每个可拖拽项绑定 ItemDragHandler 脚本,Scrollview 适配通过 Sc

vv45678的博客 226
上一篇: cocos creator 游戏排行榜的实现步骤
下一篇: 杭电 ACM 2090
CreatorYang
博客等级 码龄7年 5粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值