cocos24-ui
Cocos Creator 2.4.x のUIスクリーンショットから、UIコントロールクラスとモデルクラスのコードを自動生成するSkill。
📜 元の英語説明(参考)
根据 UI 截图生成 Cocos Creator 2.4.x 的 UI 控制类和 Model 类代码
🇯🇵 日本人クリエイター向け解説
Cocos Creator 2.4.x のUIスクリーンショットから、UIコントロールクラスとモデルクラスのコードを自動生成するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o cocos24-ui.zip https://jpskill.com/download/6957.zip && unzip -o cocos24-ui.zip && rm cocos24-ui.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6957.zip -OutFile "$d\cocos24-ui.zip"; Expand-Archive "$d\cocos24-ui.zip" -DestinationPath $d -Force; ri "$d\cocos24-ui.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
cocos24-ui.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
cocos24-uiフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[Skill 名] cocos24-ui
Cocos Creator 2.4.x ベストプラクティス
ディレクトリ構造
cocos/
├── SKILL.md # スキル説明ドキュメント
├── LoadAsset.ts # [再利用可能] リソース参照マネージャーコンポーネント
├── LoadSprite.ts # [再利用可能] 動的画像読み込みコンポーネント
├── ModelValue.ts # [再利用可能] 監視可能な数値型
├── UIManager.ts # [再利用可能] UI ポップアップマネージャー
├── UIState.ts # [再利用可能] UI 状態管理
├── UIExample.ts # [サンプル] UI コントロールクラス
└── UIModelExample.ts # [サンプル] UI モデルクラス
説明:
[再利用可能]- ベストプラクティスコードで、プロジェクトに直接コピーして使用できます。[サンプル]- 参考規範で、新しい UI を作成する際にこの構造に従って記述します。
適用シナリオ
ユーザーが提供した UI スクリーンショットから、対応する TypeScript コード(UI コントロールクラス + Model クラス)を生成します。
実行フロー:
- プロジェクト内に再利用可能なコンポーネントが存在するか確認し、なければまずプロジェクトにコピーします。
- UI スクリーンショットの構造を分析し、要素タイプ(Label、Button、Sprite など)を識別します。
- UI コントロールクラスの規範に従ってコードを生成します。
再利用可能コンポーネント
UI コードを生成する前に、以下のコンポーネントがプロジェクト内に存在するか確認し、存在しない場合はコピーしてください。
| ファイル | 説明 |
|---|---|
LoadAsset.ts |
リソース参照マネージャー。動的に読み込まれるリソースの参照カウントを一元管理し、メモリリークを防ぎます。 |
LoadSprite.ts |
動的画像読み込みコンポーネント。LoadAsset と組み合わせて使用します。 |
ModelValue.ts |
監視可能な数値型。ネットワーク遅延下での即時フィードバックとデータの一貫性の問題を解決します。 |
UIManager.ts |
UI ポップアップマネージャー。シングルトンパターンでポップアップのライフサイクルを管理します。 |
UIState.ts |
UI 状態管理。UIManager と組み合わせて使用します。 |
UI 開発規範
各 UI には、その UI に必要なすべてのデータを定義する Model クラスが付属している必要があります。UI コントロールクラスは setData(model) を介してデータを受け取ります。
UI Model クラス規範
TypeScript の class を使用してデータモデルを定義し、UI が表示する必要があるすべてのフィールドを含めます。
/** UI データモデルの例 */
export class UIModel {
/** 一意の識別子 */
id: number;
/** タイトルテキスト */
title: string = '';
/** ロック解除されているか */
isUnlock: boolean = false;
/** 監視可能な数値型 */
value: ModelValue;
/** 最大値 */
maxValue: number = 100;
/** ネストされたサブモデル */
items: SubModel[] = [];
}
要点:
- クラス名は
Modelで終わります。 - プロパティには型アノテーションとデフォルト値を付けます。
- 他の Model クラスや配列をネストできます。
- 変化を監視する必要がある数値には
ModelValue型を使用します。
例: UIModelExample.ts
UI コントロールクラス規範
新しい UI コントロールクラスを作成する際は、以下の構造に従ってください。
1. 参照するコンポーネントの宣言
@property デコレータを使用して、エディタでバインドする必要があるすべてのコンポーネント参照を宣言します。
@property(cc.Label)
label_name: cc.Label = null;
@property(cc.Node)
node_name: cc.Node = null;
@property(I18nLabel) // カスタムコンポーネント
custom_component: CustomComponent = null;
2. setData メソッド
UI 初期化のエントリポイントとして setData(data) を統一して使用します。
data: DataModel = null;
setData(data: DataModel) {
this.data = data;
this.initListen(); // イベントリスナーの初期化
this.updateUI(); // UI 表示の更新
}
3. click によるクリックイベントの一元処理
ノードに click イベントをバインドし、currentTarget.name を介して処理を振り分けます。
click(target: cc.Event.EventTouch) {
switch (target.currentTarget.name) {
case 'btn_name_1':
// ボタン1のクリックを処理
break;
case 'btn_name_2':
// ボタン2のクリックを処理
break;
default:
break;
}
}
4. イベントリスニング管理
initListen() と onDestroy() をペアで使用してイベント購読を管理し、メモリリークを防ぎます。
isListening: boolean = false;
initListen() {
if (this.isListening) return;
this.isListening = true;
this.data.property.on('valueChanged', this.onValueChanged, this);
}
onDestroy() {
if (!this.isListening) return;
this.isListening = false;
this.data.property.off('valueChanged', this.onValueChanged, this);
}
例: UIExample.ts
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Cocos Creator 2.4.x 最佳实践
目录结构
cocos/
├── SKILL.md # 技能说明文档
├── LoadAsset.ts # [可复用] 资源引用管理器组件
├── LoadSprite.ts # [可复用] 动态图片加载组件
├── ModelValue.ts # [可复用] 可监听数值类型
├── UIManager.ts # [可复用] UI 弹窗管理器
├── UIState.ts # [可复用] UI 状态管理
├── UIExample.ts # [示例] UI 控制类
└── UIModelExample.ts # [示例] UI Model 类
说明:
[可复用]- 最佳实践代码,可直接复制到项目中使用[示例]- 参考规范,新建 UI 时按此结构编写
适用场景
用户提供 UI 截图,生成对应的 TypeScript 代码(UI 控制类 + Model 类)。
执行流程:
- 检查项目中是否存在可复用组件,没有则先复制到项目
- 分析 UI 截图结构,识别元素类型(Label、Button、Sprite 等)
- 按照 UI 控制类规范生成代码
可复用组件
生成 UI 代码前,检查以下组件是否存在于项目中,不存在则复制:
| 文件 | 说明 |
|---|---|
LoadAsset.ts |
资源引用管理器,统一管理动态加载资源的引用计数,防止内存泄漏 |
LoadSprite.ts |
动态图片加载组件,配合 LoadAsset 使用 |
ModelValue.ts |
可监听数值类型,解决网络延迟下的即时反馈与数据一致性问题 |
UIManager.ts |
UI 弹窗管理器,单例模式管理弹窗生命周期 |
UIState.ts |
UI 状态管理,配合 UIManager 使用 |
UI 开发规范
每个 UI 需要配套一个 Model 类,定义该 UI 所需的所有数据。UI 控制类通过 setData(model) 接收数据。
UI Model 类规范
使用 TypeScript class 定义数据模型,包含 UI 需要展示的所有字段:
/** UI 数据模型示例 */
export class UIModel {
/** 唯一标识 */
id: number;
/** 标题文本 */
title: string = '';
/** 是否解锁 */
isUnlock: boolean = false;
/** 可监听的数值类型 */
value: ModelValue;
/** 最大值 */
maxValue: number = 100;
/** 嵌套子模型 */
items: SubModel[] = [];
}
要点:
- 类名以
Model结尾 - 属性带类型注解和默认值
- 可嵌套其他 Model 类或数组
- 需要监听变化的数值使用
ModelValue类型
示例: UIModelExample.ts
UI 控制类规范
创建新的 UI 控制类时,遵循以下结构:
1. 声明引用的组件
使用 @property 装饰器声明所有需要在编辑器中绑定的组件引用:
@property(cc.Label)
label_name: cc.Label = null;
@property(cc.Node)
node_name: cc.Node = null;
@property(I18nLabel) // 自定义组件
custom_component: CustomComponent = null;
2. setData 方法
统一使用 setData(data) 作为 UI 初始化入口:
data: DataModel = null;
setData(data: DataModel) {
this.data = data;
this.initListen(); // 初始化事件监听
this.updateUI(); // 更新 UI 显示
}
3. click 统一处理点击事件
在节点上绑定 click 事件,通过 currentTarget.name 分发处理:
click(target: cc.Event.EventTouch) {
switch (target.currentTarget.name) {
case 'btn_name_1':
// 处理按钮1点击
break;
case 'btn_name_2':
// 处理按钮2点击
break;
default:
break;
}
}
4. 事件监听管理
配对使用 initListen() 和 onDestroy() 管理事件订阅,防止内存泄漏:
isListening: boolean = false;
initListen() {
if (this.isListening) return;
this.isListening = true;
this.data.property.on('valueChanged', this.onValueChanged, this);
}
onDestroy() {
if (!this.isListening) return;
this.isListening = false;
this.data.property.off('valueChanged', this.onValueChanged, this);
}
示例: UIExample.ts