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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user