Cocos2d-x v4 官方文档学习总结

> **学习时间**: 2026 年 3 月 14 日

> **文档来源**: https://docs.cocos.com/cocos2d-x/v4/manual/zh/

> **文档版本**: Cocos2d-x v4 用户手册 Q3 2019 R.1


一、文档目录结构

📚 完整章节

| 章节 | 子章节 |

|------|--------|

| **一、新手入门** | v4 升级指南、范例、API 变更、迁移指南 |

| **二、了解引擎** | 引擎优势、学习资源、获取帮助、参与开发 |

| **三、基本概念** | 导演、场景、精灵、动作、序列、节点关系、日志 |

| **四、基本功能** | 精灵、动作、场景、UI 组件 |

| **五、进阶内容** | 特殊节点、事件分发、3D 支持、脚本、物理引擎、音频、高级话题 |

| **六、环境与工具** | 环境搭建、引擎工具、常见问题 |


二、核心概念详解

2.1 Director (导演)

**概念**:导演就像电影导演一样,控制着游戏的方方面面。

**职责**:

  • 控制游戏流程

  • 管理场景切换

  • 处理游戏循环

  • 协调各个组件

**v4 API 变更**:

```cpp

// ❌ 已废弃

CC_DEPRECATED_ATTRIBUTE static Director* sharedDirector();

void setDepthTest(bool on);

// ✅ 新方式

Director::getInstance();

Director::getInstance()->getRenderer()->setDepthTest(true);

```


2.2 Scene (场景)

**概念**:Scene 是一个容器,包含游戏所需的 Sprites、Labels、Nodes 和其他对象。

**特点**:

  • 场景是游戏的独立单元

  • 每个场景包含完整的游戏逻辑

  • 可以包含多个子节点

**场景图 (Scene Graph)**:

```

Scene (场景)

└── Layer (层)

├── Sprite (精灵)

├── Node (节点)

│ └── Sprite (精灵)

└── UI (界面)

```


2.3 Sprite (精灵)

**概念**:Sprite 是一个 2D 图像,可以通过改变其属性来进行动画或变换。

**用途**:

  • 游戏角色

  • 敌人

  • 道具

  • 背景元素

**创建方法**:

```cpp

// 从图片创建

auto sprite = Sprite::create("player.png");

// 从精灵帧缓存创建

auto sprite = Sprite::createWithSpriteFrameName("player_01.png");

// 从纹理创建

auto texture = Director::getInstance()->getTextureCache()->addImage("texture.png");

auto sprite = Sprite::createWithTexture(texture);

```


2.4 Node (节点)

**核心特性**:

  • **变换**: 位置、旋转、缩放

  • **锚点**: 定位参考点 (Anchor Point)

  • **Z 顺序**: 渲染层级

  • **子节点**: 树形层级关系

  • **标签/名称**: 节点标识

  • **动作支持**: 执行 Action

  • **事件处理**: 触摸、键盘等

**节点关系**:

```cpp

// 添加子节点

parent->addChild(child);

parent->addChild(child, zOrder);

parent->addChild(child, zOrder, tag);

// 获取子节点

auto child = parent->getChildByTag(tag);

auto child = parent->getChildByName("name");

// 移除节点

node->removeFromParent();

parent->removeChild(child);

parent->removeAllChildren();

```


2.5 Action (动作)

**动作类型**:

| 类型 | 说明 | 示例 |

|------|------|------|

| **即时动作** | 立即完成 | `Show`, `Hide`, `FlipX`, `FlipY` |

| **间隔动作** | 持续一段时间 | `MoveTo`, `RotateBy`, `ScaleTo` |

| **缓动动作** | 带缓动效果 | `EaseIn`, `EaseOut`, `EaseElastic` |

| **复合动作** | 组合其他动作 | `Sequence`, `Spawn`, `Repeat` |

**基本动作示例**:

```cpp

// 移动

auto moveTo = MoveTo::create(2.0f, Vec2(100, 100));

auto moveBy = MoveBy::create(2.0f, Vec2(50, 50));

// 旋转

auto rotateTo = RotateTo::create(2.0f, 90.0f);

auto rotateBy = RotateBy::create(2.0f, 45.0f);

// 缩放

auto scaleTo = ScaleTo::create(2.0f, 2.0f);

auto scaleBy = ScaleBy::create(2.0f, 0.5f);

// 透明度

auto fadeIn = FadeIn::create(1.0f);

auto fadeOut = FadeOut::create(1.0f);

// 变色

auto tintTo = TintTo::create(2.0f, 255, 0, 0);

auto tintBy = TintBy::create(2.0f, -50, -50, -50);

```


2.6 Sequence (序列动作)

**概念 **:多个 `Action` 对象按**指定顺序依次执行**。

**示例**:

```cpp

auto mySprite = Node::create();

auto moveTo1 = MoveTo::create(2, Vec2(50,10));

auto moveBy1 = MoveBy::create(2, Vec2(100,10));

auto moveTo2 = MoveTo::create(2, Vec2(150,10));

auto delay = DelayTime::create(1);

// 按顺序执行:moveTo1 → delay → moveBy1 → delay.clone() → moveTo2

mySprite->runAction(Sequence::create(moveTo1, delay, moveBy1, delay.clone(),

moveTo2, nullptr));

```

**执行流程**:

```

moveTo1 (2s) → delay (1s) → moveBy1 (2s) → delay (1s) → moveTo2 (2s)

```


2.7 Spawn (并行动作)

**概念 **:多个 `Action` 对象**同时执行**。

**示例**:

```cpp

auto myNode = Node::create();

auto moveTo1 = MoveTo::create(2, Vec2(50,10));

auto moveBy1 = MoveBy::create(2, Vec2(100,10));

auto moveTo2 = MoveTo::create(2, Vec2(150,10));

// 同时执行所有动作

myNode->runAction(Spawn::create(moveTo1, moveBy1, moveTo2, nullptr));

```

**执行流程**:

```

moveTo1 (2s) ──┐

moveBy1 (2s) ──┼── 同时开始,独立执行

moveTo2 (2s) ──┘

```


2.8 动作最佳实践

  1. **动作复用**: 使用 `clone()` 方法复用动作对象

  2. **终止符**: `create()` 方法必须以 `nullptr` 结尾

  3. **组合使用**: 可以在 Sequence 中嵌套 Spawn,或在 Spawn 中嵌套 Sequence

  4. **反向执行**: Sequence 支持 `reverse()` 方法反向执行

  5. **时间规划**: Spawn 中各动作独立计时,需考虑协调


三、事件分发机制

3.1 五种监听器类型

| 监听器类型 | 用途 |

|-----------|------|

| `EventListenerTouchOneByOne` | 单点触摸,逐个处理 |

| `EventListenerTouchAllAtOnce` | 多点触摸,一次性处理所有触摸点 |

| `EventListenerKeyboard` | 键盘输入事件 |

| `EventListenerMouse` | 鼠标事件(移动、滚动、按键) |

| `EventListenerCustom` | 自定义事件监听 |


3.2 事件优先级系统

  • **数值越小,优先级越高**

  • 优先级为负数的监听器会先于正数优先级被触发

  • 相同优先级的监听器按注册顺序触发

```cpp

auto listener = EventListenerTouchOneByOne::create();

listener->setPriority(1); // 数字越小优先级越高

```


3.3 触摸事件示例

```cpp

auto touchListener = EventListenerTouchOneByOne::create();

touchListener->onTouchBegan = \[\](Touch* touch, Event* event) {

CCLOG("Touch began at: %f, %f", touch->getLocation().x, touch->getLocation().y);

return true; // 返回 true 表示继续处理触摸

};

touchListener->onTouchMoved = \[\](Touch* touch, Event* event) {

CCLOG("Touch moved");

};

touchListener->onTouchEnded = \[\](Touch* touch, Event* event) {

CCLOG("Touch ended");

};

_eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);

```


3.4 键盘事件示例

```cpp

auto keyboardListener = EventListenerKeyboard::create();

keyboardListener->onKeyPressed = \[\](EventKeyboard::KeyCode keyCode, Event* event) {

CCLOG("Key pressed: %d", keyCode);

};

keyboardListener->onKeyReleased = \[\](EventKeyboard::KeyCode keyCode, Event* event) {

CCLOG("Key released: %d", keyCode);

};

_eventDispatcher->addEventListenerWithSceneGraphPriority(keyboardListener, this);

```


3.5 自定义事件示例

```cpp

// 创建自定义事件监听器

auto customListener = EventListenerCustom::create("my_custom_event",

\[\](EventCustom* event) {

CCLOG("Custom event triggered!");

});

_eventDispatcher->addEventListenerWithSceneGraphPriority(customListener, this);

// 触发自定义事件

EventCustom customEvent("my_custom_event");

_eventDispatcher->dispatchEvent(&customEvent);

```


3.6 移除事件监听器

```cpp

// 移除特定监听器

_eventDispatcher->removeEventListener(touchListener);

// 移除所有监听器

_eventDispatcher->removeAllEventListeners();

// 移除某类事件的所有监听器

_eventDispatcher->removeCustomEventListeners("my_custom_event");

```


四、UI 组件

4.1 基本 UI 控件

| 控件 | 类名 | 说明 |

|------|------|------|

| 标签 | `Label` | 文本标签 (TTF/BMFont) |

| 菜单 | `Menu` / `MenuItem` | 菜单系统 |

| 按钮 | `Button` | 按钮控件 |

| 复选框 | `CheckBox` | 复选框 |

| 进度条 | `LoadingBar` | 进度条 |

| 滑动条 | `Slider` | 滑动条 |

| 文本框 | `TextField` | 文本输入框 |

| 滚动视图 | `ScrollView` | 滚动容器 |

| 列表视图 | `ListView` | 列表容器 |

| 分页视图 | `PageView` | 分页容器 |


4.2 Label 创建方法

```cpp

// TTF 字体

auto label = Label::createWithTTF("Hello World", "fonts/arial.ttf", 24);

// 系统字体

auto label = Label::createWithSystemFont("Hello World", "Arial", 24);

// BMFont

auto label = Label::createWithBMFont("fonts/bitmapFont.fnt", "Hello World");

```


4.3 Button 使用示例

```cpp

auto button = Button::create("button_normal.png", "button_pressed.png");

button->setTitleText("Click Me");

button->addClickEventListener(\[\](Ref* sender) {

CCLOG("Button clicked!");

});

this->addChild(button);

```


五、3D 功能

5.1 Sprite3D (3D 精灵)

```cpp

auto sprite3d = Sprite3D::create("orc.c3b");

sprite3d->setPosition3D(Vec3(0.0f, 0.0f, 0.0f));

sprite3d->setRotation3D(Vec3(0.0f, 180.0f, 0.0f));

```


5.2 Animation3D (3D 动画)

```cpp

auto animation = Animation3D::create("orc.c3b");

if (animation)

{

auto animate = Animate3D::create(animation);

sprite3d->runAction(RepeatForever::create(animate));

}

```


5.3 Billboard (广告牌)

广告牌是一种特殊的 3D 精灵,**总是面向摄像机**。

**创建方式**:

```cpp

// 面向摄像机所在点

auto billboard = BillBoard::create("Blue_Front1.png", BillBoard::Mode::VIEW_POINT_ORIENTED);

// 面向摄像机所在平面 (XOY 平面)

auto billboard = BillBoard::create("Blue_Front1.png", BillBoard::Mode::VIEW_PLANE_ORIENTED);

```

**两种模式对比**:

| 模式 | 说明 |

|------|------|

| `VIEW_POINT_ORIENTED` | 广告牌面向摄像机所在的点 |

| `VIEW_PLANE_ORIENTED` | 广告牌面向摄像机所在的平面 |


5.4 PUParticleSystem3D (3D 粒子系统)

支持 **Particle Universe** 编辑器创建的 `.pu` 格式粒子文件。

**创建方式**:

```cpp

// 方式 1:传入粒子文件和材质文件 (推荐)

auto ps = PUParticleSystem3D::create("lineStreak.pu", "pu_mediapack_01.material");

ps->startParticleSystem();

this->addChild(ps);

// 方式 2:仅传入粒子文件

auto ps = PUParticleSystem3D::create("electricBeamSystem.pu");

ps->startParticleSystem();

this->addChild(ps);

```

**粒子控制方法**:

| 方法 | 说明 |

|------|------|

| `startParticleSystem()` | 开始粒子系统 |

| `stopParticleSystem()` | 停止粒子系统 |

| `pauseParticleSystem()` | 暂停粒子系统 |

| `resumeParticleSystem()` | 恢复粒子系统 |

| `getAliveParticleCount()` | 获取存活粒子总数 |

**将粒子绑定到 3D 模型**:

```cpp

auto sprite3d = Sprite3D::create("orc.c3b");

// ... 添加动画 ...

// 创建粒子并绑定到模型的特定节点

auto handler = PUParticleSystem3D::create("lightningBolt.pu");

handler->startParticleSystem();

sprite3d->getAttachNode("Bip001 L Hand")->addChild(handler);

this->addChild(sprite3d);

```


六、着色器与材质

6.1 着色器概念

**着色器 **是运行在 **GPU** 上的程序,用于绘制不同的 Cocos2d-x 节点。

Cocos2d-x 使用 **OpenGL ES Shading Language v1.0** 作为着色器语言。


6.2 ProgramState (程序状态)

**ProgramState 对象包含两个重要内容**:

  1. **Program(程序)**: 基本上就是着色器,包含顶点着色器和片段着色器

  2. **State(状态)**: 着色器的 uniforms(统一变量)

**自定义着色器**:

```cpp

sprite->setProgramState(programState);

sprite3d->setProgramState(programState);

```

**设置 Uniforms**:

```cpp

auto mvpMatrixLocation = _programState->getUniformLocation("u_MVPMatrix");

const auto& projectionMat = Director::getInstance()->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION);

_programState->setUniform(mvpMatrixLocation, projectionMat.m, sizeof(projectionMat.m));

```

**使用回调设置 Uniform**:

```cpp

auto location = _programState->getUniformLocation("u_progress");

_programState->setCallbackUniform(location, \[\](backend::ProgramState *programState, backend::UniformLocation uniform)

{

float random = CCRANDOM_0_1();

programState->setUniform(uniform, &random, sizeof(random));

});

```


6.3 Material (材质)

**为什么需要材质**:

  • 拥有多个纹理

  • 支持多通道渲染

  • 更多功能特性(光照、模糊等)

**材质文件结构**:

```glsl

material spaceship

{

technique normal

{

pass 0

{

shader

{

vertexShader = Shaders3D/3d_position_tex.vert

fragmentShader = Shaders3D/3d_color_tex.frag

u_color = 0.9,0.8,0.7

sampler u_sampler0

{

path = Sprite3DTest/boss.png

mipmap = true

wrapS = CLAMP

wrapT = CLAMP

}

}

renderState

{

cullFace = true

cullFaceSide = FRONT

depthTest = true

}

}

}

}

```

**使用材质**:

```cpp

Material* material = Material::createWithFilename("Materials/3d_effects.material");

sprite3d->setMaterial(material);

// 切换不同 Technique

material->setTechnique("normal");

```


6.4 Technique (技术)

  • 可以定义多个 Technique,并给它们不同的名称

  • 每个 Technique 可以有不同的渲染技术

  • 运行时可使用 `Material::setTechnique(const std::string& name)` 更改

**实用场景**:

  • 处理不同的光照组合

  • 当对象远离相机时,使用低质量渲染技术


6.5 Pass (通道)

一个 Technique 可以有一个或多个 Pass(多通道渲染)。

**每个 Pass 包含**:

  1. **RenderState**: GPU 状态信息(depthTest、cullFace、stencilTest 等)

  2. **GLProgramState**: 着色器及其 uniforms


七、物理引擎

7.1 支持的物理引擎

  • **Box2D**: 2D 物理引擎 (C++)

  • **Chipmunk**: 轻量级 2D 物理引擎


7.2 物理系统功能

| 功能 | 说明 |

|------|------|

| **刚体模拟** | 动态、静态、运动学刚体 |

| **碰撞检测** | 碰撞形状、碰撞回调 |

| **物理查询** | 射线检测、区域检测 |

| **关节约束** | 各种物理关节 |

| **调试绘制** | 可视化物理世界 |


7.3 物理世界创建

```cpp

// 创建物理世界

auto physicsWorld = PhysicsWorld::create();

physicsWorld->setGravity(Vec2(0, -9.8f));

// 创建物理刚体

auto body = PhysicsBody::createBox(Size(50, 50));

body->setDynamic(true);

body->setGravityEnable(true);

// 将刚体附加到节点

auto sprite = Sprite::create("box.png");

sprite->setPhysicsBody(body);

```


7.4 碰撞检测

```cpp

// 创建碰撞监听器

auto contactListener = EventListenerPhysicsContact::create();

contactListener->onContactBegin = \[\](PhysicsContact& contact) {

CCLOG("Collision detected!");

return true;

};

_eventDispatcher->addEventListenerWithSceneGraphPriority(contactListener, this);

// 设置碰撞类别

body->setCategoryBitmask(0x01);

body->setCollisionBitmask(0x01);

body->setContactTestBitmask(0x01);

```


八、音频系统

8.1 音频功能

| 功能 | 说明 |

|------|------|

| **背景音乐** | 循环播放长音频 |

| **音效** | 短音频播放 |

| **3D 音效** | 空间音频 |

| **音量控制** | 独立控制 BGM/音效 |

| **录音功能** | 音频录制 |


8.2 音频使用示例

```cpp

#include "audio/include/AudioEngine.h"

using namespace experimental;

// 播放背景音乐

int bgmId = AudioEngine::play2d("music/bgm.mp3", true, 0.5f);

// 播放音效

int effectId = AudioEngine::play2d("sound/effect.wav");

// 音量控制

AudioEngine::setVolume(bgmId, 0.3f);

// 停止播放

AudioEngine::stop(bgmId);

// 停止所有

AudioEngine::stopAll();

```


九、v4 升级指南

9.1 Metal 渲染系统

**核心变化**:

  • Apple 平台采用 **Metal** 作为渲染引擎

  • 性能提升高达 **10 倍** (3D 图形)

  • 仅支持支持 Metal 的 iOS/macOS 设备

**渲染架构**:

```

Renderer/

├── backend/

│ ├── metal/ # Metal 渲染后端

│ └── opengl/ # OpenGL ES 渲染后端

└── shaders/ # 着色器文件

```


9.2 破坏性变更

Director 类移除接口

```cpp

// ❌ 已废弃

CC_DEPRECATED_ATTRIBUTE static Director* sharedDirector();

void setDepthTest(bool on);

void pushProjectionMatrix(size_t index);

// ✅ 新方式

Director::getInstance();

Director::getInstance()->getRenderer()->setDepthTest(true);

```

Texture2D 变更

```cpp

// ❌ 已废弃

Texture2D::PixelFormat::RGBA8888;

texture->getName(); // GLuint

// ✅ 新方式

backend::PixelFormat::RGBA8888;

backend::Texture2DBackend* _texture;

```


9.3 Shader 系统升级

  • 新增 `GLProgramState`、`backend::ProgramState` 类

  • Metal 使用 **MSL** 着色器语言

  • 使用 `glsl-optimizer` 转换 GLSL → MSL

  • 着色器文件移至 `renderer/shaders/`

  • Uniform 和 Texture 需显式声明


9.4 CMake 构建系统

  • 使用 CMake 构建**所有平台**

  • 统一构建流程,简化跨平台开发

**平台运行方式**:

| 平台 | 运行方式 |

|------|----------|

| Mac | 使用 `cocos` 命令或 CMake |

| iOS | 使用 CMake 生成 Xcode 项目 |

| Android | 使用 `cocos` 命令或 Android Studio |

| Windows | 使用 `cocos` 命令或 CMake |

| Linux | 使用 `cocos` 命令或 CMake |


十、环境搭建

10.1 前置要求

| 平台 | 要求 |

|------|------|

| **Windows** | Windows 7+, Visual Studio 2015+, CMake 3.6+ |

| **macOS** | macOS 10.9+, Xcode 8+, CMake 3.6+ |

| **Linux** | Ubuntu 14.04+, GCC 4.9+, CMake 3.6+ |

| **Android** | Android Studio 3.0+, NDK r17+, JDK 8+ |

| **iOS** | Xcode 9+, iOS 8.0+ (Metal 支持设备) |


10.2 引擎安装

```bash

1. 下载引擎

git clone https://github.com/cocos2d/cocos2d-x.git

cd cocos2d-x

2. 下载依赖

python download-deps.py

3. 安装引擎

python setup.py

4. 刷新环境变量

source FILE_TO_SAVE_YOUR_SHELL_PROFILE

```


10.3 创建项目

```bash

创建 C++ 项目

cocos new MyGame -p com.mycompany.mygame -l cpp -d ./Projects

创建 Lua 项目

cocos new MyGame -p com.mycompany.mygame -l lua -d ./Projects

创建 JS 项目

cocos new MyGame -p com.mycompany.mygame -l js -d ./Projects

```


十一、性能优化

11.1 渲染优化

| 技术 | 说明 |

|------|------|

| **纹理压缩** | PVR/ETC1 格式 |

| **纹理图集** | SpriteFrameCache 合并纹理 |

| **批量渲染** | SpriteBatchNode |

| **自动合批** | 相同纹理自动合并绘制 |

| **剔除优化** | 视锥体剔除 |


11.2 内存优化

  • **资源加载**: 按需加载,及时释放

  • **对象池**: 复用频繁创建的对象

  • **纹理管理**: 统一纹理尺寸 (2 的幂次)

  • **音频管理**: 背景音乐与音效分离


11.3 CPU 优化

  • **减少 draw call**: 合并渲染批次

  • **缓存计算结果**: 避免重复计算

  • **使用对象池**: 减少内存分配

  • **Lua 性能**: 避免频繁创建 table


十二、学习资源

12.1 官方资源

| 资源 | 链接 |

|------|------|

| **GitHub** | https://github.com/cocos2d/cocos2d-x |

| **官方网站** | https://www.cocos.com/en/cocos2d-x |

| **API 文档** | https://docs.cocos2d-x.org/cocos2d-x/v4/en/api/ |

| **升级指南** | https://docs.cocos2d-x.org/cocos2d-x/v4/en/upgradeGuide/ |

| **论坛** | https://forum.cocosengine.org/ |


12.2 学习建议

  1. **逐步学习**: 将游戏分解成小块,逐个攻克

  2. **参考文档**: API Reference 和 cpp-tests 是最好的参考资料

  3. **实践为主**: 安装 Cocos2d-x 后创建新项目开始开发

  4. **阅读源码**: `cpp-tests` 包含完整的代码示例


十三、总结

13.1 Cocos2d-x v4 核心特性

| 特性 | 说明 |

|------|------|

| 🎯 **跨平台** | iOS/Android/Windows/macOS/Linux 全覆盖 |

| 🚀 **高性能** | Metal/OpenGL ES 双渲染后端 |

| 📝 **多语言** | C++/Lua/JavaScript 支持 |

| 🔧 **可扩展** | 模块化设计,易于定制 |

| 📚 **生态完善** | 丰富的文档和社区支持 |

| 💰 **开源免费** | MIT 许可证,商业友好 |


13.2 与 v3.x 的对比

| 对比项 | v3.x | v4 |

|--------|------|-----|

| **渲染后端** | OpenGL ES | Metal (Apple) / OpenGL ES |

| **构建系统** | 多套构建 | CMake 统一 |

| **Shader 语言** | GLSL | GLSL + MSL |

| **Texture2D** | OpenGL 纹理 | backend 抽象 |

| **Director API** | sharedDirector | getInstance |


13.3 官方建议

> ⚠️ **官方建议 **: 新项目优先使用 **Cocos Creator**,cocos2d-x 主要作为 Cocos Creator 1.x & 2.x 的基础框架继续维护。


> **学习完成时间**: 2026 年 3 月 14 日

> **文档版本**: Cocos2d-x v4 用户手册 Q3 2019 R.1

> **下一步**: 可将学习成果应用到实际项目中


*报告生成完毕* ✅

相关推荐
通信小呆呆9 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick9 小时前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee9 小时前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn8610 小时前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e10 小时前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨10 小时前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq11 小时前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan13 小时前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析
guslegend13 小时前
理论学习:什么是 Coding Agent?
学习
自传.13 小时前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding