feat: Add SkillModule and WeaponModule for managing skills and weapons

- Implemented SkillModule to manage FormSkillSO assets with a detailed UI for editing and displaying skill properties.
- Implemented WeaponModule to manage WeaponSO assets with a detailed UI for editing and displaying weapon properties.
- Created AssetOperations class for centralized CRUD operations on ScriptableObject assets, including create, rename, delete, and clone functionalities.
- Added DetailHeader for displaying and renaming asset names in the UI.
- Introduced SoListPane for a reusable ScriptableObject list panel with search functionality and context menus.
- Added meta files for all new scripts to ensure proper asset management in Unity.
This commit is contained in:
2026-05-21 07:09:53 +08:00
parent f096105caf
commit bb3afd130f
41 changed files with 2417 additions and 1618 deletions

View File

@@ -1,13 +1,14 @@
/* BaseGames Editor 统一样式表
路径: Assets/_Game/Scripts/Editor/UIToolkit/Editor.uss */
路径: Assets/_Game/Scripts/Editor/UIToolkit/Editor.uss
原则:不硬编码文字颜色,让 Unity 主题决定前景色 */
/* ── 分区标题 ──────────────────────────────────────────── */
.section-header {
font-size: 11px;
font-size: 12px;
-unity-font-style: bold;
margin-top: 8px;
margin-bottom: 2px;
color: rgb(180, 180, 180);
opacity: 0.85;
}
/* ── 列表项 ─────────────────────────────────────────────── */
@@ -49,16 +50,41 @@
.stats-preview {
flex-direction: row;
flex-wrap: wrap;
align-items: center;
margin-bottom: 6px;
padding: 4px 6px;
background-color: rgba(40, 40, 40, 0.75);
border-radius: 3px;
background-color: rgba(128, 128, 128, 0.08);
border-width: 1px;
border-color: rgba(128, 128, 128, 0.18);
}
/* ── 重命名栏 ──────────────────────────────────────────── */
.rename-bar {
flex-direction: column;
padding: 6px 8px;
margin-bottom: 8px;
border-top-width: 1px;
border-bottom-width: 1px;
border-top-color: rgba(128, 128, 128, 0.20);
border-bottom-color: rgba(128, 128, 128, 0.20);
background-color: rgba(128, 128, 128, 0.06);
}
.rename-bar-row {
flex-direction: row;
align-items: center;
margin-top: 4px;
}
.rename-hint {
font-size: 10px;
opacity: 0.60;
}
/* ── 标签页按钮 ──────────────────────────────────────────── */
.tab-bar {
flex-direction: row;
border-bottom-width: 1px;
border-bottom-color: rgb(60, 60, 60);
border-bottom-color: rgba(128, 128, 128, 0.30);
margin-bottom: 6px;
}
.tab-button {
@@ -66,13 +92,14 @@
border-radius: 0;
border-width: 0;
background-color: rgba(0, 0, 0, 0);
color: rgb(160, 160, 160);
opacity: 0.65;
}
.tab-button:hover {
background-color: rgba(255, 255, 255, 0.08);
background-color: rgba(128, 128, 128, 0.10);
opacity: 1.0;
}
.tab-button--active {
color: rgb(255, 255, 255);
opacity: 1.0;
border-bottom-width: 2px;
border-bottom-color: rgb(100, 160, 255);
}
@@ -88,62 +115,61 @@
border-bottom-width: 2px;
border-bottom-color: rgba(0,0,0,0);
background-color: rgba(0,0,0,0);
color: rgb(170, 170, 170);
opacity: 0.70;
-unity-font-style: bold;
font-size: 13px;
}
.tab-btn:hover {
background-color: rgba(255,255,255,0.06);
background-color: rgba(128,128,128,0.10);
opacity: 1.0;
}
.tab-btn--active {
color: rgb(255, 255, 255);
opacity: 1.0;
border-bottom-width: 2px;
border-bottom-color: rgb(90, 160, 255);
}
/* SO 工厂按钮(绿调) */
.wizard-factory-btn {
background-color: rgba(40, 100, 55, 0.75);
color: rgb(200, 255, 210);
background-color: rgba(40, 120, 60, 0.55);
border-radius: 4px;
padding: 3px 10px;
margin-right: 4px;
margin-bottom: 4px;
border-width: 1px;
border-color: rgba(80, 180, 100, 0.60);
border-color: rgba(80, 180, 100, 0.50);
}
.wizard-factory-btn:hover {
background-color: rgba(55, 130, 70, 0.90);
background-color: rgba(50, 145, 72, 0.70);
}
/* 场景放置按钮(蓝调) */
.wizard-scene-btn {
background-color: rgba(30, 60, 120, 0.80);
color: rgb(190, 220, 255);
background-color: rgba(30, 75, 150, 0.55);
border-radius: 4px;
padding: 3px 10px;
margin-right: 4px;
margin-bottom: 4px;
border-width: 1px;
border-color: rgba(80, 130, 220, 0.55);
border-color: rgba(80, 130, 220, 0.50);
}
.wizard-scene-btn:hover {
background-color: rgba(40, 80, 155, 0.95);
background-color: rgba(40, 95, 180, 0.70);
}
/* 跳转按钮(中性灰调 */
/* 跳转按钮(无背景,仅边框区分 */
.wizard-jump-btn {
background-color: rgba(55, 55, 60, 0.80);
color: rgb(210, 210, 220);
background-color: rgba(0, 0, 0, 0);
border-radius: 4px;
padding: 3px 10px;
margin-right: 4px;
margin-bottom: 4px;
border-width: 1px;
border-color: rgba(120, 120, 130, 0.45);
border-color: rgba(128, 128, 128, 0.45);
}
.wizard-jump-btn:hover {
background-color: rgba(75, 75, 85, 0.95);
background-color: rgba(128, 128, 128, 0.12);
border-color: rgba(128, 128, 128, 0.80);
}
/* 小怪类型选择按钮 */
@@ -155,8 +181,7 @@
/* ── 一键创建全部按钮(蓝调,区别于绿色工厂按钮)────────── */
.wizard-create-all-btn {
background-color: rgba(40, 80, 155, 0.85);
color: rgb(210, 230, 255);
background-color: rgba(40, 80, 155, 0.55);
border-radius: 4px;
padding: 4px 12px;
border-width: 1px;
@@ -166,7 +191,7 @@
height: 28px;
}
.wizard-create-all-btn:hover {
background-color: rgba(55, 100, 180, 0.95);
background-color: rgba(55, 100, 180, 0.75);
}
/* ── SO 状态芯片(圆角徽章,替代 MakeStatusGrid 内联颜色)── */
@@ -178,13 +203,12 @@
padding-right: 6px;
margin-right: 6px;
margin-bottom: 4px;
background-color: rgba(30, 105, 50, 0.90);
color: rgb(175, 245, 185);
background-color: rgba(35, 115, 55, 0.55);
border-width: 1px;
border-color: rgba(65, 165, 80, 0.55);
border-color: rgba(80, 185, 100, 0.55);
}
.status-chip--ok:hover {
background-color: rgba(40, 130, 62, 0.95);
background-color: rgba(50, 145, 70, 0.75);
}
.status-chip--missing {
border-radius: 4px;
@@ -194,8 +218,7 @@
padding-right: 6px;
margin-right: 6px;
margin-bottom: 4px;
background-color: rgba(145, 55, 10, 0.90);
color: rgb(255, 210, 155);
background-color: rgba(145, 55, 10, 0.55);
border-width: 1px;
border-color: rgba(195, 100, 25, 0.55);
}
@@ -217,3 +240,22 @@
background-color: rgba(128, 128, 128, 0.08);
-unity-font-style: bold;
}
.so-type-label {
font-size: 12px;
-unity-font-style: italic;
}
.so-path-label {
font-size: 11px;
opacity: 0.65;
}
/* ── 危险操作按钮(删除)───────────────────────────────── */
.action-button--danger {
border-width: 1px;
border-color: rgba(200, 80, 80, 0.50);
margin-left: 8px;
}
.action-button--danger:hover {
background-color: rgba(200, 80, 80, 0.20);
border-color: rgba(220, 100, 100, 0.80);
}