From d4574f4bd7f3d9b0cbab52fbcd56943cfeadf48b Mon Sep 17 00:00:00 2001
From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com>
Date: Fri, 18 Jul 2025 18:00:52 +0800
Subject: [PATCH] 1
---
Assets/ModuleCore/Module/Character.meta | 8 ++
.../Module/Character/DataAttribute.cs | 64 ++++++++++++++
.../Module/Character/DataAttribute.cs.meta | 11 +++
.../Module/Character/DataCharacter.cs | 87 +++++++++++++++++++
.../{ => Character}/DataCharacter.cs.meta | 0
.../Module/Character/DataProfession.cs | 73 ++++++++++++++++
.../Module/Character/DataProfession.cs.meta | 11 +++
.../ModuleCore/Module/Character/DataRace.cs | 24 +++++
.../Module/Character/DataRace.cs.meta | 11 +++
Assets/ModuleCore/Module/DataCharacter.cs | 38 --------
Assets/ModuleCore/Module/Inventory.meta | 8 ++
.../Module/Inventory/DataBackpack.cs | 18 ++++
.../Module/Inventory/DataBackpack.cs.meta | 11 +++
.../Module/Inventory/DataEquipmentSlot.cs | 49 +++++++++++
.../Inventory/DataEquipmentSlot.cs.meta | 11 +++
.../Module/Inventory/DataInventory.cs | 20 +++++
.../Module/Inventory/DataInventory.cs.meta | 11 +++
.../Module/Inventory/DataStorage.cs | 18 ++++
.../Module/Inventory/DataStorage.cs.meta | 11 +++
Assets/ModuleCore/Module/Item.meta | 8 ++
.../ModuleCore/Module/Item/DataEquipment.cs | 25 ++++++
.../Module/Item/DataEquipment.cs.meta | 11 +++
Assets/ModuleCore/Module/Item/DataItem.cs | 48 ++++++++++
.../ModuleCore/Module/Item/DataItem.cs.meta | 11 +++
Assets/ModuleCore/Module/Item/DataMaterial.cs | 13 +++
.../Module/Item/DataMaterial.cs.meta | 11 +++
.../ModuleSingle/ManagerSimulator.cs | 20 +++++
.../ModuleSingle/ManagerSimulator.cs.meta | 11 +++
Assets/ModuleCore/ModuleTools/Dice.cs | 8 +-
.../SampleScene/SampleScene.unity | 47 +++++++++-
30 files changed, 656 insertions(+), 41 deletions(-)
create mode 100644 Assets/ModuleCore/Module/Character.meta
create mode 100644 Assets/ModuleCore/Module/Character/DataAttribute.cs
create mode 100644 Assets/ModuleCore/Module/Character/DataAttribute.cs.meta
create mode 100644 Assets/ModuleCore/Module/Character/DataCharacter.cs
rename Assets/ModuleCore/Module/{ => Character}/DataCharacter.cs.meta (100%)
create mode 100644 Assets/ModuleCore/Module/Character/DataProfession.cs
create mode 100644 Assets/ModuleCore/Module/Character/DataProfession.cs.meta
create mode 100644 Assets/ModuleCore/Module/Character/DataRace.cs
create mode 100644 Assets/ModuleCore/Module/Character/DataRace.cs.meta
delete mode 100644 Assets/ModuleCore/Module/DataCharacter.cs
create mode 100644 Assets/ModuleCore/Module/Inventory.meta
create mode 100644 Assets/ModuleCore/Module/Inventory/DataBackpack.cs
create mode 100644 Assets/ModuleCore/Module/Inventory/DataBackpack.cs.meta
create mode 100644 Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs
create mode 100644 Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs.meta
create mode 100644 Assets/ModuleCore/Module/Inventory/DataInventory.cs
create mode 100644 Assets/ModuleCore/Module/Inventory/DataInventory.cs.meta
create mode 100644 Assets/ModuleCore/Module/Inventory/DataStorage.cs
create mode 100644 Assets/ModuleCore/Module/Inventory/DataStorage.cs.meta
create mode 100644 Assets/ModuleCore/Module/Item.meta
create mode 100644 Assets/ModuleCore/Module/Item/DataEquipment.cs
create mode 100644 Assets/ModuleCore/Module/Item/DataEquipment.cs.meta
create mode 100644 Assets/ModuleCore/Module/Item/DataItem.cs
create mode 100644 Assets/ModuleCore/Module/Item/DataItem.cs.meta
create mode 100644 Assets/ModuleCore/Module/Item/DataMaterial.cs
create mode 100644 Assets/ModuleCore/Module/Item/DataMaterial.cs.meta
create mode 100644 Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs
create mode 100644 Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs.meta
diff --git a/Assets/ModuleCore/Module/Character.meta b/Assets/ModuleCore/Module/Character.meta
new file mode 100644
index 0000000..b372ebb
--- /dev/null
+++ b/Assets/ModuleCore/Module/Character.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f600b7e509b166244a37c240ffee12ba
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Character/DataAttribute.cs b/Assets/ModuleCore/Module/Character/DataAttribute.cs
new file mode 100644
index 0000000..3901ff2
--- /dev/null
+++ b/Assets/ModuleCore/Module/Character/DataAttribute.cs
@@ -0,0 +1,64 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 属性 - 数据
+///
+public class DataAttribute {
+ /// 力量(strength)
+ public int Str;
+ /// 敏捷(dexterity)
+ public int Dex;
+ /// 体质(constitution)
+ public int Con;
+ /// 智力(intelligence)
+ public int Int;
+ /// 感知(wisdom)
+ public int Wis;
+ /// 魅力(charisma)
+ public int Cha;
+
+ /// 创建初始属性
+ public static DataAttribute Initial() {
+ DataAttribute attribute = new DataAttribute();
+ attribute.Str = Dice.RollAttribute();
+ attribute.Dex = Dice.RollAttribute();
+ attribute.Con = Dice.RollAttribute();
+ attribute.Int = Dice.RollAttribute();
+ attribute.Wis = Dice.RollAttribute();
+ attribute.Cha = Dice.RollAttribute();
+ return attribute;
+ }
+ // 计算属性调整值(属性值-10)/2 向下取整
+ public int Modifier(int value) {
+ return (int)System.Math.Floor((value - 10) / 2.0);
+ }
+ /// 添加属性
+ public void Add(DataAttribute value) {
+ Str += value.Str;
+ Dex += value.Dex;
+ Con += value.Con;
+ Int += value.Int;
+ Wis += value.Wis;
+ Cha += value.Cha;
+ }
+ /// 减少属性
+ public void Sub(DataAttribute value) {
+ Str -= value.Str;
+ Dex -= value.Dex;
+ Con -= value.Con;
+ Int -= value.Int;
+ Wis -= value.Wis;
+ Cha -= value.Cha;
+ }
+ /// 覆盖属性
+ public void Cover(DataAttribute value) {
+ Str = value.Str;
+ Dex = value.Dex;
+ Con = value.Con;
+ Int = value.Int;
+ Wis = value.Wis;
+ Cha = value.Cha;
+ }
+}
diff --git a/Assets/ModuleCore/Module/Character/DataAttribute.cs.meta b/Assets/ModuleCore/Module/Character/DataAttribute.cs.meta
new file mode 100644
index 0000000..b2adddf
--- /dev/null
+++ b/Assets/ModuleCore/Module/Character/DataAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fb070bc540efae048ae79c8319c0c0e2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Character/DataCharacter.cs b/Assets/ModuleCore/Module/Character/DataCharacter.cs
new file mode 100644
index 0000000..e368026
--- /dev/null
+++ b/Assets/ModuleCore/Module/Character/DataCharacter.cs
@@ -0,0 +1,87 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 角色 - 数据
+///
+public class DataCharacter : DataAttribute {
+ /// 角色名字
+ public string name;
+ /// 战斗等级
+ public int level = 0;
+ /// 护甲等级
+ public int armorClass = 0;
+ /// 经验点
+ public Vector2Int expPoint;
+ /// 生命点
+ public Vector2Int hitPoint;
+
+ /// 基础属性
+ public DataAttribute basic = Initial();
+ /// 种族
+ public DataRace race = DataRace.None();
+ /// 职业
+ public DataProfession profession = DataProfession.None();
+ /// 装备栏
+ public DataEquipmentSlot equipmentSlot = new DataEquipmentSlot();
+
+ /// 力量调整值(strength)
+ public int StrModifier => Modifier(Str);
+ /// 敏捷调整值(dexterity)
+ public int DexModifier => Modifier(Dex);
+ /// 体质调整值(constitution)
+ public int ConModifier => Modifier(Con);
+ /// 智力调整值(intelligence)
+ public int IntModifier => Modifier(Int);
+ /// 感知调整值(wisdom)
+ public int WisModifier => Modifier(Wis);
+ /// 魅力调整值(charisma)
+ public int ChaModifier => Modifier(Cha);
+
+ /// 更新角色状态
+ public void Update() {
+ // 更新属性
+ Cover(basic);
+ // 添加种族属性
+ Add(race);
+ // 添加职业属性
+ Add(profession);
+ // 战斗等级
+ level = profession.level;
+ // 护甲等级
+ armorClass = 10 + DexModifier;
+ // 升级经验 = 100 * 3^level
+ expPoint.y = 100 * (int)Mathf.Pow(3, level);
+ // 最大生命值
+ hitPoint.y = race.HitPoint() + profession.HitPoint();
+ }
+ // 计算护甲等级(AC)
+
+ // 无甲基础AC = 10
+
+ // 护甲
+ // 重甲 敏捷加值无效
+ // 中甲 敏捷加值上限+2
+ // 轻甲 敏捷加值全额生效
+
+ // 盾牌 直接增加
+
+ // 法术 直接增加
+
+ // 打印角色卡
+ public void PrintCharacterSheet() {
+ Debug.Log($"=== {name} LV{level} ===");
+ Debug.Log($"种族: {race.name}");
+ Debug.Log($"职业: {profession.name}");
+ Debug.Log($"力量: {Str} ({StrModifier.ToString("+#;-#;+0")})");
+ Debug.Log($"敏捷: {Dex} ({DexModifier.ToString("+#;-#;+0")})");
+ Debug.Log($"体质: {Con} ({ConModifier.ToString("+#;-#;+0")})");
+ Debug.Log($"智力: {Int} ({IntModifier.ToString("+#;-#;+0")})");
+ Debug.Log($"感知: {Wis} ({WisModifier.ToString("+#;-#;+0")})");
+ Debug.Log($"魅力: {Cha} ({ChaModifier.ToString("+#;-#;+0")})");
+ Debug.Log($"经验值: {expPoint}");
+ Debug.Log($"生命值: {hitPoint}");
+ Debug.Log($"护甲等级: {armorClass})");
+ }
+}
diff --git a/Assets/ModuleCore/Module/DataCharacter.cs.meta b/Assets/ModuleCore/Module/Character/DataCharacter.cs.meta
similarity index 100%
rename from Assets/ModuleCore/Module/DataCharacter.cs.meta
rename to Assets/ModuleCore/Module/Character/DataCharacter.cs.meta
diff --git a/Assets/ModuleCore/Module/Character/DataProfession.cs b/Assets/ModuleCore/Module/Character/DataProfession.cs
new file mode 100644
index 0000000..4c3751e
--- /dev/null
+++ b/Assets/ModuleCore/Module/Character/DataProfession.cs
@@ -0,0 +1,73 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+///
+/// 职业 - 数据
+///
+public class DataProfession : DataAttribute {
+ /// 职业名称
+ public string name;
+ /// 职业等级
+ public int level = 0;
+ /// 生命骰子
+ public int hitDice = 0;
+ /// 累计生命点
+ public List hitPoints = new List();
+
+ /// 升级:骰生命骰子+体质调整值
+ public void Upgrade(int modifier) {
+ level++;
+ int hitPoint = Dice.Roll(hitDice) + modifier;
+ hitPoints.Add(hitPoint);
+ }
+ /// 生命点:每级生命点总和
+ public int HitPoint() {
+ return hitPoints.Sum();
+ }
+
+ /// 无职业
+ public static DataProfession None() {
+ return new DataProfession() { name = "无" };
+ }
+ /// 战士职业
+ public static DataProfession Warrior(int modifier) {
+ DataProfession profession = new DataProfession();
+ // 战士,初始1级,1d10生命骰子,初始生命=满生命骰子+体质调整值
+ profession.name = "战士";
+ profession.level = 1;
+ profession.hitDice = 10;
+ profession.hitPoints.Add(profession.hitDice + modifier);
+ // 职业属性加成
+ profession.Str = 2;
+ profession.Con = 1;
+ return profession;
+ }
+ /// 法师职业
+ public static DataProfession Wizard(int modifier) {
+ DataProfession profession = new DataProfession();
+ // 法师,初始1级,1d6生命骰子,初始生命=满生命骰子+体质调整值
+ profession.name = "法师";
+ profession.level = 1;
+ profession.hitDice = 6;
+ profession.hitPoints.Add(profession.hitDice + modifier);
+ // 职业属性加成
+ profession.Int = 2;
+ profession.Dex = 1;
+ return profession;
+ }
+ /// 牧师职业
+ public static DataProfession Cleric(int modifier) {
+ DataProfession profession = new DataProfession();
+ // 牧师,初始1级,1d8生命骰子,初始生命=满生命骰子+体质调整值
+ profession.name = "牧师";
+ profession.level = 1;
+ profession.hitDice = 8;
+ profession.hitPoints.Add(profession.hitDice + modifier);
+ // 职业属性加成
+ profession.Wis = 2;
+ profession.Con = 1;
+ return profession;
+ }
+}
diff --git a/Assets/ModuleCore/Module/Character/DataProfession.cs.meta b/Assets/ModuleCore/Module/Character/DataProfession.cs.meta
new file mode 100644
index 0000000..f5ad694
--- /dev/null
+++ b/Assets/ModuleCore/Module/Character/DataProfession.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9fd9942ce333fa94aa2297f3569a4939
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Character/DataRace.cs b/Assets/ModuleCore/Module/Character/DataRace.cs
new file mode 100644
index 0000000..f6a27a2
--- /dev/null
+++ b/Assets/ModuleCore/Module/Character/DataRace.cs
@@ -0,0 +1,24 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 种族 - 数据
+///
+public class DataRace : DataAttribute {
+ /// 种族名称
+ public string name;
+ /// 基础生命点
+ public int hitPoint = 10;
+
+ /// 生命点:每级生命点总和
+ public int HitPoint() {
+ return hitPoint;
+ }
+
+ /// 无种族
+ public static DataRace None() {
+ // 初始生命值10点
+ return new DataRace() { name = "无" };
+ }
+}
diff --git a/Assets/ModuleCore/Module/Character/DataRace.cs.meta b/Assets/ModuleCore/Module/Character/DataRace.cs.meta
new file mode 100644
index 0000000..226d76e
--- /dev/null
+++ b/Assets/ModuleCore/Module/Character/DataRace.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e444293bdefc67346a3d80901305e4c7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/DataCharacter.cs b/Assets/ModuleCore/Module/DataCharacter.cs
deleted file mode 100644
index 6afcde5..0000000
--- a/Assets/ModuleCore/Module/DataCharacter.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-///
-/// 角色 - 数据
-///
-public class DataCharacter {
- /// 角色名字
- public string name;
- /// 基础属性
- public DataAttribute basic;
- /// 角色职业
- public DataProfession profession;
-}
-///
-/// 属性 - 数据
-///
-public class DataAttribute {
- /// 力量(strength)
- public int Str;
- /// 敏捷(dexterity)
- public int Dex;
- /// 体质(constitution)
- public int Con;
- /// 智力(intelligence)
- public int Int;
- /// 感知(wisdom)
- public int Wis;
- /// 魅力(charisma)
- public int Cha;
-}
-///
-/// 职业 - 数据
-///
-public class DataProfession : DataAttribute {
-
-}
\ No newline at end of file
diff --git a/Assets/ModuleCore/Module/Inventory.meta b/Assets/ModuleCore/Module/Inventory.meta
new file mode 100644
index 0000000..3f161fe
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 31e213ee804e43848b56cd336a8025d4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Inventory/DataBackpack.cs b/Assets/ModuleCore/Module/Inventory/DataBackpack.cs
new file mode 100644
index 0000000..3d337e9
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory/DataBackpack.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class DataBackpack : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Assets/ModuleCore/Module/Inventory/DataBackpack.cs.meta b/Assets/ModuleCore/Module/Inventory/DataBackpack.cs.meta
new file mode 100644
index 0000000..a836268
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory/DataBackpack.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6f54ab1b3cd1a8f4d9ec1fb975e05ef6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs b/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs
new file mode 100644
index 0000000..bc26919
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs
@@ -0,0 +1,49 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 装备栏 - 数据
+///
+public class DataEquipmentSlot : DataInventory {
+ /// 武器1
+ public DataWeapon Weapon1;
+ /// 武器2
+ public DataWeapon Weapon2;
+ /// 护甲
+ public DataArmor Armor;
+ /// 头盔
+ public DataEquipment Helmets;
+ /// 手套
+ public DataEquipment Gloves;
+ /// 鞋子
+ public DataEquipment Shoes;
+
+ public override bool Add(DataItem item) {
+ // 如果是武器,则尝试装备
+ if (item is DataWeapon weapon) { return Wear(weapon); }
+ // 如果是护甲,则尝试装备
+ if (item is DataArmor armor) { return Wear(armor); }
+ // 如果是其他,则尝试装备
+ if (item is DataEquipment equipment) { return Wear(equipment); }
+ return false;
+ }
+ public override bool Remove(DataItem item) {
+ throw new System.NotImplementedException();
+ }
+
+ private bool Wear(DataWeapon weapon) {
+ Weapon1 = weapon;
+ return true;
+ }
+ private bool Wear(DataArmor armor) {
+ Armor = armor;
+ return true;
+ }
+ private bool Wear(DataEquipment equipment) {
+ if (equipment.equipmentType == EquipmentType.Helmets) { Helmets = equipment; return true; }
+ if (equipment.equipmentType == EquipmentType.Gloves) { Gloves = equipment; return true; }
+ if (equipment.equipmentType == EquipmentType.Shoes) { Shoes = equipment; return true; }
+ return false;
+ }
+}
diff --git a/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs.meta b/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs.meta
new file mode 100644
index 0000000..1ef4b34
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory/DataEquipmentSlot.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 83edeb48630d62a44a8d7c7551e9f0fb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Inventory/DataInventory.cs b/Assets/ModuleCore/Module/Inventory/DataInventory.cs
new file mode 100644
index 0000000..e18aa7d
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory/DataInventory.cs
@@ -0,0 +1,20 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 物品库存 - 数据
+///
+public abstract class DataInventory {
+ /// 库存类型
+ public InventoryType inventoryType;
+
+ /// 添加物品
+ public abstract bool Add(DataItem item);
+ /// 移除物品
+ public abstract bool Remove(DataItem item);
+}
+///
+/// 库存类型枚举,区分背包、仓库等不同库存。
+///
+public enum InventoryType { EquipmentSlot, Backpack, Storage }
\ No newline at end of file
diff --git a/Assets/ModuleCore/Module/Inventory/DataInventory.cs.meta b/Assets/ModuleCore/Module/Inventory/DataInventory.cs.meta
new file mode 100644
index 0000000..32a36f2
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory/DataInventory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 278351779c3c1514bbcce18723dd500c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Inventory/DataStorage.cs b/Assets/ModuleCore/Module/Inventory/DataStorage.cs
new file mode 100644
index 0000000..7008903
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory/DataStorage.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class DataStorage : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Assets/ModuleCore/Module/Inventory/DataStorage.cs.meta b/Assets/ModuleCore/Module/Inventory/DataStorage.cs.meta
new file mode 100644
index 0000000..dba3136
--- /dev/null
+++ b/Assets/ModuleCore/Module/Inventory/DataStorage.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 943f05d3866fd8e4cb463a4f0597d0c5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Item.meta b/Assets/ModuleCore/Module/Item.meta
new file mode 100644
index 0000000..6535c7e
--- /dev/null
+++ b/Assets/ModuleCore/Module/Item.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da6831802283b3643bf03d784ccc5813
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Item/DataEquipment.cs b/Assets/ModuleCore/Module/Item/DataEquipment.cs
new file mode 100644
index 0000000..d480a1c
--- /dev/null
+++ b/Assets/ModuleCore/Module/Item/DataEquipment.cs
@@ -0,0 +1,25 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 装备 - 数据
+///
+public class DataEquipment : DataItem {
+ /// 装备类型
+ public EquipmentType equipmentType;
+}
+///
+/// 武器 - 数据
+///
+public class DataWeapon : DataEquipment {
+ /// 武器类型
+ public WeaponType weaponType;
+}
+///
+/// 护甲 - 数据
+///
+public class DataArmor : DataEquipment {
+ /// 护甲类型
+ public ArmorType armorType;
+}
\ No newline at end of file
diff --git a/Assets/ModuleCore/Module/Item/DataEquipment.cs.meta b/Assets/ModuleCore/Module/Item/DataEquipment.cs.meta
new file mode 100644
index 0000000..a19fe8c
--- /dev/null
+++ b/Assets/ModuleCore/Module/Item/DataEquipment.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c500c73626d889c4c8cac76a53f95b2d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Item/DataItem.cs b/Assets/ModuleCore/Module/Item/DataItem.cs
new file mode 100644
index 0000000..2f3049a
--- /dev/null
+++ b/Assets/ModuleCore/Module/Item/DataItem.cs
@@ -0,0 +1,48 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 物品 - 数据
+///
+public class DataItem {
+ /// 物品名称
+ public string name;
+ /// 物品类型
+ public ItemType itemType;
+}
+///
+/// 物品类型。
+///
+public enum ItemType {
+ Material, // 材料
+ Equipment // 装备
+}
+///
+/// 装备类型。
+///
+public enum EquipmentType {
+ Weapon, // 武器
+ Armor, // 护甲
+ Helmets, //头盔
+ Gloves, // 手套
+ Shoes, // 鞋子
+}
+///
+/// 武器类型。
+///
+public enum WeaponType {
+ LightWeapon, // 轻型武器
+ MediumWeapon, // 中型武器
+ HeavyWeapon, //重型武器
+ Shield, // 盾牌
+}
+///
+/// 护甲类型。
+///
+public enum ArmorType {
+ ClothArmor, // 布甲
+ LightArmor, // 轻甲
+ MediumArmor, // 中甲
+ HeavyArmor, // 重甲
+}
\ No newline at end of file
diff --git a/Assets/ModuleCore/Module/Item/DataItem.cs.meta b/Assets/ModuleCore/Module/Item/DataItem.cs.meta
new file mode 100644
index 0000000..47b143e
--- /dev/null
+++ b/Assets/ModuleCore/Module/Item/DataItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 557ad290ccf27454baad3a04e41aec95
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/Module/Item/DataMaterial.cs b/Assets/ModuleCore/Module/Item/DataMaterial.cs
new file mode 100644
index 0000000..0562828
--- /dev/null
+++ b/Assets/ModuleCore/Module/Item/DataMaterial.cs
@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+///
+/// 材料 - 数据
+///
+public class DataMaterial : DataItem {
+ /// 物品数量
+ public int quantity;
+ /// 堆叠上限
+ public int maxStack;
+}
diff --git a/Assets/ModuleCore/Module/Item/DataMaterial.cs.meta b/Assets/ModuleCore/Module/Item/DataMaterial.cs.meta
new file mode 100644
index 0000000..698351d
--- /dev/null
+++ b/Assets/ModuleCore/Module/Item/DataMaterial.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d8fb2ebbb537271478ec399677a1b08a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs b/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs
new file mode 100644
index 0000000..15486f0
--- /dev/null
+++ b/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs
@@ -0,0 +1,20 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using MuHua;
+
+///
+/// 模拟器 - 管理
+///
+public class ManagerSimulator : ModuleSingle {
+
+ public DataCharacter character;
+
+ protected override void Awake() => NoReplace(false);
+
+ private void Start() {
+ character = new DataCharacter();
+ character.Update();
+ character.PrintCharacterSheet();
+ }
+}
diff --git a/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs.meta b/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs.meta
new file mode 100644
index 0000000..8a506dc
--- /dev/null
+++ b/Assets/ModuleCore/ModuleSingle/ManagerSimulator.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3ce4cafcd40fff3428928289fa060de4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleTools/Dice.cs b/Assets/ModuleCore/ModuleTools/Dice.cs
index b427900..8334791 100644
--- a/Assets/ModuleCore/ModuleTools/Dice.cs
+++ b/Assets/ModuleCore/ModuleTools/Dice.cs
@@ -8,9 +8,13 @@ using Random = UnityEngine.Random;
/// 骰子
///
public static class Dice {
- // 生成4d6弃最低的随机属性值
+ /// 掷一次骰子
+ public static int Roll(int value) {
+ return Random.Range(1, value + 1);
+ }
+ /// Attribute规则:投4次d6,去掉最低值
public static int RollAttribute() {
- int[] rolls = { Random.Range(1, 7), Random.Range(1, 7), Random.Range(1, 7), Random.Range(1, 7) };
+ int[] rolls = { Roll(6), Roll(6), Roll(6), Roll(6) };
Array.Sort(rolls);
return rolls[1] + rolls[2] + rolls[3]; // 弃最低值
}
diff --git a/Assets/SceneManager/SampleScene/SampleScene.unity b/Assets/SceneManager/SampleScene/SampleScene.unity
index f3fd290..90e9ece 100644
--- a/Assets/SceneManager/SampleScene/SampleScene.unity
+++ b/Assets/SceneManager/SampleScene/SampleScene.unity
@@ -122,6 +122,50 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
+--- !u!1 &169597751
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 169597752}
+ - component: {fileID: 169597753}
+ m_Layer: 0
+ m_Name: ManagerSimulator
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &169597752
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 169597751}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1439912283}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &169597753
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 169597751}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3ce4cafcd40fff3428928289fa060de4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
--- !u!1 &670296962
GameObject:
m_ObjectHideFlags: 0
@@ -140,7 +184,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!114 &670296963
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -417,6 +461,7 @@ Transform:
- {fileID: 963194228}
- {fileID: 705507995}
- {fileID: 1586181182}
+ - {fileID: 169597752}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1439912284